{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "\n",
    "\n",
    "import sqlite3\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import nltk\n",
    "import string\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from sklearn.feature_extraction.text import TfidfTransformer\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "\n",
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn import metrics\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "from nltk.stem.porter import PorterStemmer\n",
    "\n",
    "import re\n",
    "# Tutorial about Python regular expressions: https://pymotw.com/2/re/\n",
    "import string\n",
    "from nltk.corpus import stopwords\n",
    "from nltk.stem import PorterStemmer\n",
    "from nltk.stem.wordnet import WordNetLemmatizer\n",
    "\n",
    "from gensim.models import Word2Vec\n",
    "from gensim.models import KeyedVectors\n",
    "import pickle\n",
    "\n",
    "from tqdm import tqdm\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>target</th>\n",
       "      <th>comment_text</th>\n",
       "      <th>severe_toxicity</th>\n",
       "      <th>obscene</th>\n",
       "      <th>identity_attack</th>\n",
       "      <th>insult</th>\n",
       "      <th>threat</th>\n",
       "      <th>asian</th>\n",
       "      <th>atheist</th>\n",
       "      <th>...</th>\n",
       "      <th>article_id</th>\n",
       "      <th>rating</th>\n",
       "      <th>funny</th>\n",
       "      <th>wow</th>\n",
       "      <th>sad</th>\n",
       "      <th>likes</th>\n",
       "      <th>disagree</th>\n",
       "      <th>sexual_explicit</th>\n",
       "      <th>identity_annotator_count</th>\n",
       "      <th>toxicity_annotator_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>59848</td>\n",
       "      <td>0.0</td>\n",
       "      <td>This is so cool. It's like, 'would you want yo...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>2006</td>\n",
       "      <td>rejected</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>59849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Thank you!! This would make my life a lot less...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>2006</td>\n",
       "      <td>rejected</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>59852</td>\n",
       "      <td>0.0</td>\n",
       "      <td>This is such an urgent design problem; kudos t...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>2006</td>\n",
       "      <td>rejected</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 45 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      id  target                                       comment_text  \\\n",
       "0  59848     0.0  This is so cool. It's like, 'would you want yo...   \n",
       "1  59849     0.0  Thank you!! This would make my life a lot less...   \n",
       "2  59852     0.0  This is such an urgent design problem; kudos t...   \n",
       "\n",
       "   severe_toxicity  obscene  identity_attack  insult  threat  asian  atheist  \\\n",
       "0              0.0      0.0              0.0     0.0     0.0    NaN      NaN   \n",
       "1              0.0      0.0              0.0     0.0     0.0    NaN      NaN   \n",
       "2              0.0      0.0              0.0     0.0     0.0    NaN      NaN   \n",
       "\n",
       "   ...  article_id    rating  funny  wow  sad  likes  disagree  \\\n",
       "0  ...        2006  rejected      0    0    0      0         0   \n",
       "1  ...        2006  rejected      0    0    0      0         0   \n",
       "2  ...        2006  rejected      0    0    0      0         0   \n",
       "\n",
       "   sexual_explicit  identity_annotator_count  toxicity_annotator_count  \n",
       "0              0.0                         0                         4  \n",
       "1              0.0                         0                         4  \n",
       "2              0.0                         0                         4  \n",
       "\n",
       "[3 rows x 45 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv(\"train.csv\")\n",
    "data.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['id', 'target', 'comment_text', 'severe_toxicity', 'obscene',\n",
       "       'identity_attack', 'insult', 'threat', 'asian', 'atheist', 'bisexual',\n",
       "       'black', 'buddhist', 'christian', 'female', 'heterosexual', 'hindu',\n",
       "       'homosexual_gay_or_lesbian', 'intellectual_or_learning_disability',\n",
       "       'jewish', 'latino', 'male', 'muslim', 'other_disability',\n",
       "       'other_gender', 'other_race_or_ethnicity', 'other_religion',\n",
       "       'other_sexual_orientation', 'physical_disability',\n",
       "       'psychiatric_or_mental_illness', 'transgender', 'white', 'created_date',\n",
       "       'publication_id', 'parent_id', 'article_id', 'rating', 'funny', 'wow',\n",
       "       'sad', 'likes', 'disagree', 'sexual_explicit',\n",
       "       'identity_annotator_count', 'toxicity_annotator_count'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1804874, 45)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of data points in our data (1804874, 45)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>target</th>\n",
       "      <th>comment_text</th>\n",
       "      <th>severe_toxicity</th>\n",
       "      <th>obscene</th>\n",
       "      <th>identity_attack</th>\n",
       "      <th>insult</th>\n",
       "      <th>threat</th>\n",
       "      <th>asian</th>\n",
       "      <th>atheist</th>\n",
       "      <th>...</th>\n",
       "      <th>article_id</th>\n",
       "      <th>rating</th>\n",
       "      <th>funny</th>\n",
       "      <th>wow</th>\n",
       "      <th>sad</th>\n",
       "      <th>likes</th>\n",
       "      <th>disagree</th>\n",
       "      <th>sexual_explicit</th>\n",
       "      <th>identity_annotator_count</th>\n",
       "      <th>toxicity_annotator_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>59848</td>\n",
       "      <td>0</td>\n",
       "      <td>This is so cool. It's like, 'would you want yo...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>2006</td>\n",
       "      <td>rejected</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>59849</td>\n",
       "      <td>0</td>\n",
       "      <td>Thank you!! This would make my life a lot less...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>2006</td>\n",
       "      <td>rejected</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>59852</td>\n",
       "      <td>0</td>\n",
       "      <td>This is such an urgent design problem; kudos t...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>2006</td>\n",
       "      <td>rejected</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 45 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      id  target                                       comment_text  \\\n",
       "0  59848       0  This is so cool. It's like, 'would you want yo...   \n",
       "1  59849       0  Thank you!! This would make my life a lot less...   \n",
       "2  59852       0  This is such an urgent design problem; kudos t...   \n",
       "\n",
       "   severe_toxicity  obscene  identity_attack  insult  threat  asian  atheist  \\\n",
       "0              0.0      0.0              0.0     0.0     0.0    NaN      NaN   \n",
       "1              0.0      0.0              0.0     0.0     0.0    NaN      NaN   \n",
       "2              0.0      0.0              0.0     0.0     0.0    NaN      NaN   \n",
       "\n",
       "   ...  article_id    rating  funny  wow  sad  likes  disagree  \\\n",
       "0  ...        2006  rejected      0    0    0      0         0   \n",
       "1  ...        2006  rejected      0    0    0      0         0   \n",
       "2  ...        2006  rejected      0    0    0      0         0   \n",
       "\n",
       "   sexual_explicit  identity_annotator_count  toxicity_annotator_count  \n",
       "0              0.0                         0                         4  \n",
       "1              0.0                         0                         4  \n",
       "2              0.0                         0                         4  \n",
       "\n",
       "[3 rows x 45 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def partition(x):\n",
    "    if x>=0.5:\n",
    "        return 1\n",
    "    else:\n",
    "        return 0\n",
    "    \n",
    "actualscore=data[\"target\"]\n",
    "PositiveNegative = actualscore.map(partition)\n",
    "data[\"target\"] = PositiveNegative\n",
    "print(\"Number of data points in our data\",data.shape)\n",
    "data.head(3)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1660540\n",
       "1     144334\n",
       "Name: target, dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[\"target\"].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loving this collection. Cant wait till Season 2 is released. Should be any day now according to http://yeezy-season2.com/\n",
      "==================================================\n",
      "I feel as if Oregon could make itself known to the world for other things, like becoming a leader on carbon pricing or other climate policies. But maybe that's hopelessly idealistic.\n",
      "==================================================\n",
      "I equally love men. leafy i love you. hugs and kisses.\n"
     ]
    }
   ],
   "source": [
    "print(data[\"comment_text\"].values[100])\n",
    "print(\"=\"*50)\n",
    "print(data[\"comment_text\"].values[1000])\n",
    "print(\"=\"*50)\n",
    "print(data[\"comment_text\"].values[2000])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# https://stackoverflow.com/a/47091490/4084039\n",
    "import re\n",
    "\n",
    "def decontracted(phrase):\n",
    "    # specific\n",
    "    phrase = re.sub(r\"won't\", \"will not\", phrase)\n",
    "    phrase = re.sub(r\"can\\'t\", \"can not\", phrase)\n",
    "\n",
    "    # general\n",
    "    phrase = re.sub(r\"n\\'t\", \" not\", phrase)\n",
    "    phrase = re.sub(r\"\\'re\", \" are\", phrase)\n",
    "    phrase = re.sub(r\"\\'s\", \" is\", phrase)\n",
    "    phrase = re.sub(r\"\\'d\", \" would\", phrase)\n",
    "    phrase = re.sub(r\"\\'ll\", \" will\", phrase)\n",
    "    phrase = re.sub(r\"\\'t\", \" not\", phrase)\n",
    "    phrase = re.sub(r\"\\'ve\", \" have\", phrase)\n",
    "    phrase = re.sub(r\"\\'m\", \" am\", phrase)\n",
    "    return phrase"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# https://gist.github.com/sebleier/554280\n",
    "# we are removing the words from the stop words list: 'no', 'nor', 'not'\n",
    "# <br /><br /> ==> after the above steps, we are getting \"br br\"\n",
    "# we are including them into stop words list\n",
    "# instead of <br /> if we have <br/> these tags would have revmoved in the 1st step\n",
    "\n",
    "stopwords= set(['br', 'the', 'i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', \"you're\", \"you've\",\\\n",
    "            \"you'll\", \"you'd\", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', \\\n",
    "            'she', \"she's\", 'her', 'hers', 'herself', 'it', \"it's\", 'its', 'itself', 'they', 'them', 'their',\\\n",
    "            'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', \"that'll\", 'these', 'those', \\\n",
    "            'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', \\\n",
    "            'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', \\\n",
    "            'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after',\\\n",
    "            'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further',\\\n",
    "            'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more',\\\n",
    "            'most', 'other', 'some', 'such', 'only', 'own', 'same', 'so', 'than', 'too', 'very', \\\n",
    "            's', 't', 'can', 'will', 'just', 'don', \"don't\", 'should', \"should've\", 'now', 'd', 'll', 'm', 'o', 're', \\\n",
    "            've', 'y', 'ain', 'aren', \"aren't\", 'couldn', \"couldn't\", 'didn', \"didn't\", 'doesn', \"doesn't\", 'hadn',\\\n",
    "            \"hadn't\", 'hasn', \"hasn't\", 'haven', \"haven't\", 'isn', \"isn't\", 'ma', 'mightn', \"mightn't\", 'mustn',\\\n",
    "            \"mustn't\", 'needn', \"needn't\", 'shan', \"shan't\", 'shouldn', \"shouldn't\", 'wasn', \"wasn't\", 'weren', \"weren't\", \\\n",
    "            'won', \"won't\", 'wouldn', \"wouldn't\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  4%|▍         | 70128/1804874 [00:18<06:57, 4158.81it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'...'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 13%|█▎        | 234723/1804874 [00:58<06:16, 4175.50it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . that includes his 'female chest pushing' virtuous elbows.\\n\\nIt would do well, for the guy who got the job because of his father's name, to remain quiet.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 14%|█▍        | 256004/1804874 [01:03<06:14, 4131.84it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.....'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 16%|█▌        | 281164/1804874 [01:09<05:56, 4268.86it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 16%|█▌        | 282444/1804874 [01:10<06:04, 4177.28it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"You know if one is going to make wild accusations -- both proof of what you say & a few citations to back up the deprecating 'tear-down' of Ms. Leitch would be appropriate.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 20%|█▉        | 354450/1804874 [01:27<05:57, 4055.13it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'You are absolutely right...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 21%|██        | 371081/1804874 [01:31<05:39, 4217.93it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 23%|██▎       | 422458/1804874 [01:43<05:50, 3944.82it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 25%|██▍       | 449121/1804874 [01:50<05:21, 4215.24it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 32%|███▏      | 571532/1804874 [02:19<04:57, 4147.03it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'...'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 32%|███▏      | 585182/1804874 [02:22<04:47, 4245.13it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 33%|███▎      | 598668/1804874 [02:25<04:45, 4229.36it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 33%|███▎      | 602974/1804874 [02:26<04:40, 4285.19it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 34%|███▎      | 608927/1804874 [02:28<04:44, 4204.63it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . perhaps, but primarily their ability to 'lift' the work of others, call it their own -- and have that reality disappear over a few decades...\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 34%|███▍      | 614062/1804874 [02:29<04:40, 4251.69it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 37%|███▋      | 671852/1804874 [02:43<04:32, 4154.03it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 37%|███▋      | 675614/1804874 [02:44<04:35, 4104.15it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 39%|███▊      | 697323/1804874 [02:49<04:29, 4106.27it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 41%|████      | 734487/1804874 [02:58<04:18, 4141.95it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 41%|████      | 734902/1804874 [02:58<04:20, 4110.31it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . No Kidding.\\nGee, what the heck happened? Reality kick-in -- finally.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 41%|████▏     | 745335/1804874 [03:01<04:18, 4102.95it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 41%|████▏     | 747430/1804874 [03:01<04:13, 4174.77it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 42%|████▏     | 750380/1804874 [03:02<04:10, 4201.97it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 42%|████▏     | 750801/1804874 [03:02<04:22, 4015.65it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 42%|████▏     | 751205/1804874 [03:02<04:24, 3990.43it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 42%|████▏     | 756139/1804874 [03:03<04:14, 4126.63it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 43%|████▎     | 777285/1804874 [03:09<04:05, 4193.42it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 43%|████▎     | 779789/1804874 [03:09<04:08, 4131.91it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 43%|████▎     | 780203/1804874 [03:09<04:10, 4088.85it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 44%|████▍     | 791134/1804874 [03:12<03:58, 4253.74it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 44%|████▍     | 799262/1804874 [03:14<03:55, 4269.15it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 46%|████▌     | 825163/1804874 [03:20<03:52, 4205.23it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . or you could ''haud yur wheesht' &  respect the opinion of ALL who enter after paying their monthly Globe & Mail bucks for the privilege to opine here ..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"Oh come on . . . how about drinking up the 'half-full' instead of staring at the 'half-empty'...\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 46%|████▌     | 826001/1804874 [03:20<03:55, 4154.07it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . Nope, just a pi$$ed off customer who got the boots put to their head.\\n\\nThe events are real, friend...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 46%|████▋     | 838784/1804874 [03:23<03:52, 4148.03it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Looks like it time to go back for the rest of the education . . .  to earn a decent living.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 47%|████▋     | 840876/1804874 [03:24<03:52, 4151.44it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'...'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 47%|████▋     | 844222/1804874 [03:25<03:50, 4170.77it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . Exactly.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 47%|████▋     | 853906/1804874 [03:27<03:48, 4165.73it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 47%|████▋     | 855606/1804874 [03:27<03:45, 4217.58it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 47%|████▋     | 856443/1804874 [03:28<03:51, 4093.88it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 48%|████▊     | 858080/1804874 [03:28<03:55, 4023.09it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 48%|████▊     | 868930/1804874 [03:31<03:45, 4154.53it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 49%|████▊     | 879352/1804874 [03:33<03:46, 4083.08it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . and then there are those whose wish list includes the election of Marine Le Pen to France's presidency..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 49%|████▉     | 881395/1804874 [03:34<03:49, 4020.61it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 49%|████▉     | 892412/1804874 [03:36<03:44, 4066.01it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Thank you... Precisely!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 50%|████▉     | 895260/1804874 [03:37<03:45, 4042.00it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent Logic... Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 50%|████▉     | 896063/1804874 [03:37<03:49, 3956.90it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'That is quite right. . . Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Nicely said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Seems to be the case...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Yes indeed..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 50%|████▉     | 896847/1804874 [03:37<03:55, 3863.32it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 50%|█████     | 903386/1804874 [03:39<03:44, 4011.28it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly. . . \\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'What nonsense. . . Slandering this Doctor is absolutely ridiculous..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 51%|█████     | 921153/1804874 [03:43<03:36, 4081.97it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'The Sale of Hydro One is completely disgusting...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 52%|█████▏    | 936149/1804874 [03:47<03:29, 4155.06it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 52%|█████▏    | 936985/1804874 [03:47<03:29, 4136.70it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Nicely said... \\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'\" Seems to me the Star has lost its way.\"\\n\\n. . . one singular opinion based on what seems to be \\'full-blown prejudice\\'..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"This whole Aga Khan $30 Million -- Trudeau Vacation -- plus the Trudeau Foundation -- looks as 'crooked' as a country mile..\\n\\nHope the 'Ethics Commissioner' has a lot of energy snacks..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 53%|█████▎    | 952202/1804874 [03:51<03:42, 3835.72it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"Ain't it the truth...\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Oh come-on ... that was absolutely hilarious!\\n\\nIt just has to be a joke.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 54%|█████▍    | 973545/1804874 [03:56<03:14, 4265.55it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Get a therapist, Sara because this obsessive-compulsion with Trump is becoming quite reiterative & boring. . . \\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 54%|█████▍    | 975693/1804874 [03:57<03:14, 4269.50it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"And that, friend, is no reason for the 'life imprisonment'... that is complete bs ...\\n\\nBut then vicious is as vicious does... eh, pal.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . and yet, here you are. . . eh, pal?\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 54%|█████▍    | 978260/1804874 [03:57<03:14, 4254.56it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"Why Not Comment??? That is what an Open & Free Society is about.. !!\\n\\nSticking one's head into the ground like an ostrich -- is not what intelligent humans do ..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Steve, Well Said..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 54%|█████▍    | 978686/1804874 [03:57<03:16, 4209.23it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Terrible situation . . . did the 2 young Muslim women finally contact the police to help as witnesses to the murders & to show solidarity with the families of the men killed protecting them??\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 54%|█████▍    | 979541/1804874 [03:58<03:17, 4187.33it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent comment...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Good Grief... Seems the Meritocracy Doctor is in.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 54%|█████▍    | 982509/1804874 [03:58<03:15, 4196.65it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Hear! Hear! Jack Canuck!\\n\\nWell Said.. !\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 54%|█████▍    | 982929/1804874 [03:58<03:22, 4067.49it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 55%|█████▌    | 997432/1804874 [04:02<03:11, 4212.64it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Suppose only the future will tell.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Interesting though..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Possibly...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 56%|█████▌    | 1005961/1804874 [04:04<03:09, 4210.69it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 57%|█████▋    | 1033198/1804874 [04:10<03:05, 4169.38it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 57%|█████▋    | 1036138/1804874 [04:11<03:04, 4172.26it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'You nailed it, Lamont.. !!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 58%|█████▊    | 1047103/1804874 [04:14<03:02, 4156.23it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'How argumentative... and predictable.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 58%|█████▊    | 1048350/1804874 [04:14<03:04, 4092.11it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 59%|█████▊    | 1056818/1804874 [04:16<02:59, 4174.83it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Systematic take over of Canada... Priceless!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'\"Why I won\\'t leave London, ever...\"\\n\\nInteresting.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 59%|█████▊    | 1057643/1804874 [04:16<03:04, 4052.94it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"The level of 'Censorship' with this story is utterly disgusting, Globe and Mail.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 59%|█████▊    | 1058049/1804874 [04:16<03:06, 4010.28it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . as stated -- 'Let cool heads prevail'..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . your comment is just fine.. looks like the 'Comment Police' have shown up and are just getting warmed up with the 'Neggies'..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 59%|█████▉    | 1062304/1804874 [04:17<02:53, 4273.70it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'...'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 59%|█████▉    | 1063579/1804874 [04:18<02:57, 4187.96it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'You are absolutely right...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 59%|█████▉    | 1068704/1804874 [04:19<02:56, 4163.90it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 59%|█████▉    | 1070374/1804874 [04:19<02:57, 4142.42it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'\"Ooooh, someone sounds jealous!\"\\n~ ~ ~ ~\\nYou bet... !!\\nHey G & M ... *over here* ... It\\'s Me!! --  I really want this job.. !!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 59%|█████▉    | 1073746/1804874 [04:20<02:53, 4223.63it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 60%|█████▉    | 1077985/1804874 [04:21<02:54, 4160.79it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said, Bart...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 60%|██████    | 1085039/1804874 [04:23<03:00, 3996.25it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . given his history, it's somewhat obvious.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 60%|██████    | 1085439/1804874 [04:23<03:04, 3895.65it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . .  seems that 'atheists' are off the grid in this discussion.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent Advice...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 60%|██████    | 1089091/1804874 [04:24<02:55, 4069.92it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 61%|██████    | 1095332/1804874 [04:25<02:53, 4079.31it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . and appear to be good buddies with North Korea, the largest ~ 25 Million strong state-sponsored prison on the Planet.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'So Very Well Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 62%|██████▏   | 1121104/1804874 [04:32<02:44, 4161.07it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 62%|██████▏   | 1122351/1804874 [04:32<02:47, 4077.50it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"What an incredible statement of abject Communistic manipulation ...\\n.\\nPure nonsense... \\n.\\nCanadians are far more intelligent that to fall for the 'Why do you hate our values' accusation' .\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 62%|██████▏   | 1122760/1804874 [04:32<02:49, 4024.39it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"2 years, 3 months, 24 days... till the next Canadian Federal Election..\\n\\nNo more Majority Gov't Stupidity..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 62%|██████▏   | 1123169/1804874 [04:32<02:48, 4035.59it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"erratum...\\n\\nDoesn't seem so...\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . and China can go to hell.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 63%|██████▎   | 1142901/1804874 [04:37<02:37, 4208.82it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Nicely Said... and so True.\\n\\nHappy Canada Day.. !!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 64%|██████▎   | 1147120/1804874 [04:38<02:37, 4181.42it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . more 'straw man' tootling..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . it's a Liberal thing.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 64%|██████▍   | 1152525/1804874 [04:39<02:37, 4152.41it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 64%|██████▍   | 1155111/1804874 [04:40<02:31, 4302.38it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'2003 - 2004 . . . Liberals under Prime Minister Paul Martin.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 64%|██████▍   | 1155542/1804874 [04:40<02:39, 4064.96it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent synopsis... Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . spoilt mommy's boy politics.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 64%|██████▍   | 1157595/1804874 [04:41<02:41, 4004.82it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'@Philly_Canauck: \"Ladies, help us collect, we\\'ll help you collect; otherwise, back off!\"\\n~ ~ ~\\n. . . that sounds lousy -- that\\'s a real problem there.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 64%|██████▍   | 1158401/1804874 [04:41<02:43, 3945.02it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . Liberal Prime Minister Paul Martin.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 64%|██████▍   | 1158797/1804874 [04:41<02:45, 3894.51it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 64%|██████▍   | 1159188/1804874 [04:41<02:46, 3879.47it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Nicely said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 64%|██████▍   | 1161116/1804874 [04:41<02:51, 3763.20it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent Point...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 65%|██████▍   | 1170876/1804874 [04:44<02:34, 4112.69it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Ditto...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 65%|██████▍   | 1171294/1804874 [04:44<02:33, 4123.59it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Sounds good... and then there is reality... one man dead; one man blind; the perpetrator receives an apology & $10 Million Dollars. \\n\\nYeah...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . he then owes the rest of us $4 Mil. Cdn..\\n\\nThe apology was enough.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent comment... \\n\\n. . . which brings this Canadian to the question -- what the heck is going on in Ottawa ???\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 65%|██████▌   | 1173835/1804874 [04:45<02:29, 4209.64it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"Apparently, it seems the righteous Mr. E. is not taking calls right now... you know how it is after 'payday'... so much to do.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 65%|██████▌   | 1181916/1804874 [04:47<02:31, 4116.18it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly... Well Said, Canadian.. !!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 66%|██████▌   | 1183171/1804874 [04:47<02:30, 4123.72it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"Elbow to the Mammary Trudeau Canada's Feckless Feminist Prime Minister at Large, that is...\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent Comment... Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 66%|██████▌   | 1193889/1804874 [04:49<02:23, 4268.50it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'\"The censorship here is a much bigger problem than anywhere else. Can G&M explains what the rule to delete comments?\"\\n~ ~ ~\\nYou are quite right... this may help ..\\n\\n\\nCheers, Canadian..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'You are absolutely right...\\n. . plus there are likely a number more to plug into that OC dominated venn..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'What a wonderful story of Humanitarianism springing into action... repeatedly.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"Unless greased-up with a slightly torn pocked and rolled up to at the elbows -- they look 'cheesy faux'.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 67%|██████▋   | 1205176/1804874 [04:52<02:20, 4267.80it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exciting Suff.. !!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"I'm with you...\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'How interesting...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Ditto...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . generalizing statement over a whole population. Tsk Tsk..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"No Rust & Well Constructed  -- That's the Ticket.. !!\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"That is simply more manipulative propaganda from an experimental gov't which is strong-arming its people.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Nicely Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"No kidding... Also looks too face heavy -- needs a design which does not look like its a distended 'box'.. Seems primitive. \\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 67%|██████▋   | 1211119/1804874 [04:54<02:27, 4017.05it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 68%|██████▊   | 1229489/1804874 [04:58<02:16, 4205.71it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"As they say... it ain't over till its over -- Wynne has a great deal to answer for.. Starting Hydro One..\\nPolitical outcome for the People of Ontaio is genderless -- Time for a change.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Good to know...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 68%|██████▊   | 1233312/1804874 [04:59<02:17, 4167.60it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well you know, 214Montreal... you are absolutely right but it would seem that you are not immune to trolleste.\\n\\nYour comment is fair and unbiased.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Teddy Ballgame 9 & MarcDacey: Well Said !\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 68%|██████▊   | 1233733/1804874 [04:59<02:16, 4171.14it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Deuces Wild - Nicely Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'At Last... !! Nicely Said!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'214Montreal - Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 68%|██████▊   | 1234153/1804874 [04:59<02:22, 3993.07it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent Comment... !!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Alcest: Jews & moderate Muslims are perceived equally in Canada.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent comment.. !!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 68%|██████▊   | 1234556/1804874 [05:00<02:26, 3902.42it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . and its time to get rid of it.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 69%|██████▉   | 1241365/1804874 [05:01<02:14, 4197.36it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 69%|██████▉   | 1245572/1804874 [05:02<02:14, 4162.15it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent Article... enjoyed it.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'What a unique concept... looking forward to viewing this film.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 69%|██████▉   | 1249395/1804874 [05:03<02:13, 4165.60it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'No Kidding..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 70%|██████▉   | 1254803/1804874 [05:04<02:16, 4035.32it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 70%|███████   | 1269426/1804874 [05:08<02:04, 4307.71it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'What a megalomaniac...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 71%|███████   | 1274521/1804874 [05:09<02:06, 4192.45it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'True enough. . . it seems that instead of discussing all issues in an open forthright nature there appears to be a push to silence... which belongs to the purview of tyranny.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 71%|███████▏  | 1287362/1804874 [05:12<02:05, 4115.38it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Okay... That made me smile. Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 72%|███████▏  | 1305593/1804874 [05:17<02:00, 4129.67it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Ridiculous trash-talk.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 72%|███████▏  | 1306015/1804874 [05:17<02:00, 4147.77it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'More trash-talk\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 72%|███████▏  | 1306847/1804874 [05:17<02:02, 4062.84it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Terrible waste of life...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 73%|███████▎  | 1310158/1804874 [05:18<02:00, 4103.67it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . and you know how manic the Airy-Fairy-Dust of the NeoLibs gets when they commandeer the Magical Partisan Trolls to defecate on basic truth & logic.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 73%|███████▎  | 1310569/1804874 [05:18<02:02, 4048.31it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent Point...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 73%|███████▎  | 1325533/1804874 [05:22<01:53, 4205.76it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'A gentleman with a soulful country voice,  inculcated within his pure musical artistry... Rest in peace, Mr. Glen Campbell -- thank you for the music.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 75%|███████▍  | 1351709/1804874 [05:28<01:48, 4185.66it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 76%|███████▌  | 1364481/1804874 [05:31<01:43, 4237.36it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"Eva, do you have children? It would seem that ridiculing any child is 'low-brow' vitriol ..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 76%|███████▌  | 1369518/1804874 [05:33<01:45, 4132.58it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 76%|███████▌  | 1374958/1804874 [05:34<01:42, 4189.26it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"No... people would be wise to listen to *everyone's* opinion.. \\n\\nThis glorification of the 'Tech Worker' is patently silly. Intellectual workers cover off a plethora of professions...\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 76%|███████▋  | 1379631/1804874 [05:35<01:39, 4274.53it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said, Canadian...!!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 77%|███████▋  | 1388825/1804874 [05:38<02:13, 3125.37it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'\"Consciousness to the fact that they are going to have to hurt or kill a lot of people if they want to maintain societal dominance.\"\\n~ ~ ~\\nHow blatantly silly..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'You have got to be Kidding ?!?\\n\\n ... Good Try -- No Cigar. \\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 77%|███████▋  | 1389139/1804874 [05:38<02:21, 2947.51it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Done...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 77%|███████▋  | 1393451/1804874 [05:39<01:51, 3687.59it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 77%|███████▋  | 1398392/1804874 [05:41<01:46, 3815.84it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 78%|███████▊  | 1414799/1804874 [05:45<02:02, 3186.11it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly... Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 79%|███████▉  | 1423421/1804874 [05:48<01:40, 3787.71it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 79%|███████▉  | 1424179/1804874 [05:48<01:42, 3697.40it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Party Hardy Trudeau & Buddy Butts are making this up as they go..\\n\\nThey intend to take the current Canadian structure apart -- bone by bone.. \\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 79%|███████▉  | 1432608/1804874 [05:50<02:02, 3035.84it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'The Americans certainly have their problems right now...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 80%|████████  | 1450194/1804874 [05:55<01:25, 4158.43it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Nicely Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . likely for having to listen to this woman's bigoted racist trash-talk..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Thank you for a poignant post.. Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 81%|████████  | 1453521/1804874 [05:55<01:24, 4141.70it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 81%|████████  | 1457749/1804874 [05:56<01:22, 4196.99it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'What a strange dumb comment..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 82%|████████▏ | 1477251/1804874 [06:01<01:17, 4228.02it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\". . . nothing like falling back on 'unnecessary personal insult' to pejoratively retort to a logical premise...\\n\\nCheers Canadian.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 82%|████████▏ | 1478101/1804874 [06:01<01:17, 4207.69it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 83%|████████▎ | 1492835/1804874 [06:05<01:16, 4086.61it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 83%|████████▎ | 1493660/1804874 [06:05<01:16, 4051.33it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 83%|████████▎ | 1494066/1804874 [06:05<01:17, 4033.09it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Man... this Canadian was laughing to tears from your comment... Priceless.. !\\n\\nYou coined the perfect comparative simile..\\n\\nCheers! :)\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 83%|████████▎ | 1499121/1804874 [06:06<01:13, 4171.66it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well... you never know, Buford.. We here in Canada do hope that is not the case.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 84%|████████▎ | 1509030/1804874 [06:09<01:12, 4090.14it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly... Well Said.. !!\\n\\nSmaller populations not more humans -- contrary to popular global belief there actually are other species on this Planet that are just as important as humans..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'(c) \"That is why a shared culture is the sine qua non for a thriving quality cinema, literature, etc.\"(c)\\n~ ~ ~\\nYou are quite right... Well Said!!\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 84%|████████▍ | 1516022/1804874 [06:11<01:10, 4089.07it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 84%|████████▍ | 1520996/1804874 [06:12<01:09, 4089.38it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Gee, Alceste... Good Try !!.. but Wrong. Just try re-reading the comment.\\n\\nGood Luck & Cheers, Canadian.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'You are quite right.. Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 84%|████████▍ | 1521807/1804874 [06:12<01:10, 3994.38it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'WesternPatriot.. Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"No Kidding... How could that be??\\n\\nGiven the amount of censorship that seems to be taking place within this story's commenting thread... it is surprising you were able to state your opinion here..\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"You make a very good point... Strange Stats from the Federal Gov't agency Stats Can -- published by another Federal Gov't crown agency, CBC.\\n\\nOf course, there's No bias there.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 85%|████████▍ | 1527211/1804874 [06:13<01:06, 4169.26it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent Insight... Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 85%|████████▌ | 1541399/1804874 [06:17<01:02, 4206.48it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 87%|████████▋ | 1573070/1804874 [06:24<00:53, 4310.93it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"You nailed it... and now it is time to pay for the 'Majority' we gave them.\\n\\n. . . and We Canadians will pay dearly.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 90%|████████▉ | 1619226/1804874 [06:35<00:44, 4184.97it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said, OrsonW.. !\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 92%|█████████▏| 1666224/1804874 [06:46<00:32, 4246.82it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Excellent Comment... Well Said, Teddy.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 92%|█████████▏| 1667071/1804874 [06:47<00:33, 4169.22it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"Trudeau's bolo punch with his aggressive taxing & spending on those who can not defend themselves... ergo, Trudeau's dumb management of our Canada's Finances.\\n \\nMr. Divisive -- That's Who.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 92%|█████████▏| 1667489/1804874 [06:47<00:33, 4066.01it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"Boy, that really hurt. Gee whiz... I guess you must be havin' a bad day, huh?\\n\\nWell then, you know...  I really will try to stay on topic just for you, honey.\\n\\nLOL.\\n\\n/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 92%|█████████▏| 1668294/1804874 [06:47<00:34, 3939.35it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 92%|█████████▏| 1669491/1804874 [06:47<00:34, 3909.75it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 94%|█████████▎| 1688682/1804874 [06:52<00:27, 4193.46it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'CBC got its payoff to the tune of over ~$1.3 Billion..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 94%|█████████▍| 1693224/1804874 [06:53<00:27, 4116.22it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said...\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 94%|█████████▍| 1696959/1804874 [06:54<00:26, 4093.38it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Not at all... welcome Canadian.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 95%|█████████▌| 1715172/1804874 [06:58<00:21, 4112.93it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 96%|█████████▌| 1725978/1804874 [07:01<00:19, 4115.61it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 96%|█████████▌| 1726390/1804874 [07:01<00:19, 4095.75it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Gee... hate to break it to you but, yelling at another Canadian about how they should perceive their choice is a sad commentary in & of itself..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 97%|█████████▋| 1747517/1804874 [07:06<00:13, 4185.08it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'...'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 98%|█████████▊| 1759827/1804874 [07:09<00:10, 4216.02it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . and yet here you are -- mingling.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 99%|█████████▊| 1780822/1804874 [07:14<00:05, 4218.75it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . .  \"another\" what, Canadian??  Would that be more innocent victims for a pretentious snotty virus??\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 99%|█████████▊| 1781245/1804874 [07:14<00:05, 4213.15it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'It only takes \"courage\" if the individual is \\'sincere\\'. . . otherwise, the \"Excuse\" is simply manipulation.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 99%|█████████▉| 1787156/1804874 [07:15<00:04, 4160.88it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'That fails to make sense..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "100%|█████████▉| 1799627/1804874 [07:18<00:01, 4276.48it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Allan, you think.. ?? Gosh, how can you say that??\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "100%|██████████| 1804874/1804874 [07:20<00:00, 4100.15it/s]\n"
     ]
    }
   ],
   "source": [
    "from tqdm import tqdm\n",
    "from bs4 import BeautifulSoup\n",
    "\n",
    "preprocessed_comment = []\n",
    "# tqdm is for printing the status bar\n",
    "for sentance in tqdm(data['comment_text'].values):\n",
    "    sentance = re.sub(r\"http\\S+\", \"\", sentance)\n",
    "    sentance = BeautifulSoup(sentance, 'lxml').get_text()\n",
    "    sentance = decontracted(sentance)\n",
    "    sentance = re.sub(\"\\S*\\d\\S*\", \"\", sentance).strip()\n",
    "    sentance = re.sub('[^A-Za-z]+', ' ', sentance)\n",
    "    # https://gist.github.com/sebleier/554280\n",
    "    sentance = ' '.join(e.lower() for e in sentance.split() if e.lower() not in stopwords)\n",
    "    preprocessed_comment.append(sentance.strip())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'loving collection cant wait till season released day according'"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "preprocessed_comment[100]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>target</th>\n",
       "      <th>severe_toxicity</th>\n",
       "      <th>obscene</th>\n",
       "      <th>identity_attack</th>\n",
       "      <th>insult</th>\n",
       "      <th>threat</th>\n",
       "      <th>asian</th>\n",
       "      <th>atheist</th>\n",
       "      <th>bisexual</th>\n",
       "      <th>...</th>\n",
       "      <th>parent_id</th>\n",
       "      <th>article_id</th>\n",
       "      <th>funny</th>\n",
       "      <th>wow</th>\n",
       "      <th>sad</th>\n",
       "      <th>likes</th>\n",
       "      <th>disagree</th>\n",
       "      <th>sexual_explicit</th>\n",
       "      <th>identity_annotator_count</th>\n",
       "      <th>toxicity_annotator_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>405130.000000</td>\n",
       "      <td>405130.000000</td>\n",
       "      <td>405130.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.026228e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "      <td>1.804874e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.738434e+06</td>\n",
       "      <td>7.996902e-02</td>\n",
       "      <td>4.582099e-03</td>\n",
       "      <td>1.387721e-02</td>\n",
       "      <td>2.263571e-02</td>\n",
       "      <td>8.115273e-02</td>\n",
       "      <td>9.311271e-03</td>\n",
       "      <td>0.011964</td>\n",
       "      <td>0.003205</td>\n",
       "      <td>0.001884</td>\n",
       "      <td>...</td>\n",
       "      <td>3.722687e+06</td>\n",
       "      <td>2.813597e+05</td>\n",
       "      <td>2.779269e-01</td>\n",
       "      <td>4.420696e-02</td>\n",
       "      <td>1.091173e-01</td>\n",
       "      <td>2.446167e+00</td>\n",
       "      <td>5.843688e-01</td>\n",
       "      <td>6.605974e-03</td>\n",
       "      <td>1.439019e+00</td>\n",
       "      <td>8.784694e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>2.445187e+06</td>\n",
       "      <td>2.712453e-01</td>\n",
       "      <td>2.286128e-02</td>\n",
       "      <td>6.460419e-02</td>\n",
       "      <td>7.873156e-02</td>\n",
       "      <td>1.760657e-01</td>\n",
       "      <td>4.942218e-02</td>\n",
       "      <td>0.087166</td>\n",
       "      <td>0.050193</td>\n",
       "      <td>0.026077</td>\n",
       "      <td>...</td>\n",
       "      <td>2.450261e+06</td>\n",
       "      <td>1.039293e+05</td>\n",
       "      <td>1.055313e+00</td>\n",
       "      <td>2.449359e-01</td>\n",
       "      <td>4.555363e-01</td>\n",
       "      <td>4.727924e+00</td>\n",
       "      <td>1.866589e+00</td>\n",
       "      <td>4.529782e-02</td>\n",
       "      <td>1.787041e+01</td>\n",
       "      <td>4.350086e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>5.984800e+04</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>6.100600e+04</td>\n",
       "      <td>2.006000e+03</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.000000e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>7.969752e+05</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>7.960188e+05</td>\n",
       "      <td>1.601200e+05</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>4.000000e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>5.223774e+06</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>5.222993e+06</td>\n",
       "      <td>3.321260e+05</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>4.000000e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>5.769854e+06</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>9.090909e-02</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>5.775758e+06</td>\n",
       "      <td>3.662370e+05</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>6.000000e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>6.334010e+06</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>6.333965e+06</td>\n",
       "      <td>3.995410e+05</td>\n",
       "      <td>1.020000e+02</td>\n",
       "      <td>2.100000e+01</td>\n",
       "      <td>3.100000e+01</td>\n",
       "      <td>3.000000e+02</td>\n",
       "      <td>1.870000e+02</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.866000e+03</td>\n",
       "      <td>4.936000e+03</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 42 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 id        target  severe_toxicity       obscene  \\\n",
       "count  1.804874e+06  1.804874e+06     1.804874e+06  1.804874e+06   \n",
       "mean   3.738434e+06  7.996902e-02     4.582099e-03  1.387721e-02   \n",
       "std    2.445187e+06  2.712453e-01     2.286128e-02  6.460419e-02   \n",
       "min    5.984800e+04  0.000000e+00     0.000000e+00  0.000000e+00   \n",
       "25%    7.969752e+05  0.000000e+00     0.000000e+00  0.000000e+00   \n",
       "50%    5.223774e+06  0.000000e+00     0.000000e+00  0.000000e+00   \n",
       "75%    5.769854e+06  0.000000e+00     0.000000e+00  0.000000e+00   \n",
       "max    6.334010e+06  1.000000e+00     1.000000e+00  1.000000e+00   \n",
       "\n",
       "       identity_attack        insult        threat          asian  \\\n",
       "count     1.804874e+06  1.804874e+06  1.804874e+06  405130.000000   \n",
       "mean      2.263571e-02  8.115273e-02  9.311271e-03       0.011964   \n",
       "std       7.873156e-02  1.760657e-01  4.942218e-02       0.087166   \n",
       "min       0.000000e+00  0.000000e+00  0.000000e+00       0.000000   \n",
       "25%       0.000000e+00  0.000000e+00  0.000000e+00       0.000000   \n",
       "50%       0.000000e+00  0.000000e+00  0.000000e+00       0.000000   \n",
       "75%       0.000000e+00  9.090909e-02  0.000000e+00       0.000000   \n",
       "max       1.000000e+00  1.000000e+00  1.000000e+00       1.000000   \n",
       "\n",
       "             atheist       bisexual  ...     parent_id    article_id  \\\n",
       "count  405130.000000  405130.000000  ...  1.026228e+06  1.804874e+06   \n",
       "mean        0.003205       0.001884  ...  3.722687e+06  2.813597e+05   \n",
       "std         0.050193       0.026077  ...  2.450261e+06  1.039293e+05   \n",
       "min         0.000000       0.000000  ...  6.100600e+04  2.006000e+03   \n",
       "25%         0.000000       0.000000  ...  7.960188e+05  1.601200e+05   \n",
       "50%         0.000000       0.000000  ...  5.222993e+06  3.321260e+05   \n",
       "75%         0.000000       0.000000  ...  5.775758e+06  3.662370e+05   \n",
       "max         1.000000       1.000000  ...  6.333965e+06  3.995410e+05   \n",
       "\n",
       "              funny           wow           sad         likes      disagree  \\\n",
       "count  1.804874e+06  1.804874e+06  1.804874e+06  1.804874e+06  1.804874e+06   \n",
       "mean   2.779269e-01  4.420696e-02  1.091173e-01  2.446167e+00  5.843688e-01   \n",
       "std    1.055313e+00  2.449359e-01  4.555363e-01  4.727924e+00  1.866589e+00   \n",
       "min    0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00   \n",
       "25%    0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00   \n",
       "50%    0.000000e+00  0.000000e+00  0.000000e+00  1.000000e+00  0.000000e+00   \n",
       "75%    0.000000e+00  0.000000e+00  0.000000e+00  3.000000e+00  0.000000e+00   \n",
       "max    1.020000e+02  2.100000e+01  3.100000e+01  3.000000e+02  1.870000e+02   \n",
       "\n",
       "       sexual_explicit  identity_annotator_count  toxicity_annotator_count  \n",
       "count     1.804874e+06              1.804874e+06              1.804874e+06  \n",
       "mean      6.605974e-03              1.439019e+00              8.784694e+00  \n",
       "std       4.529782e-02              1.787041e+01              4.350086e+01  \n",
       "min       0.000000e+00              0.000000e+00              3.000000e+00  \n",
       "25%       0.000000e+00              0.000000e+00              4.000000e+00  \n",
       "50%       0.000000e+00              0.000000e+00              4.000000e+00  \n",
       "75%       0.000000e+00              0.000000e+00              6.000000e+00  \n",
       "max       1.000000e+00              1.866000e+03              4.936000e+03  \n",
       "\n",
       "[8 rows x 42 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>target</th>\n",
       "      <th>comment_text</th>\n",
       "      <th>severe_toxicity</th>\n",
       "      <th>obscene</th>\n",
       "      <th>identity_attack</th>\n",
       "      <th>insult</th>\n",
       "      <th>threat</th>\n",
       "      <th>asian</th>\n",
       "      <th>atheist</th>\n",
       "      <th>...</th>\n",
       "      <th>rating</th>\n",
       "      <th>funny</th>\n",
       "      <th>wow</th>\n",
       "      <th>sad</th>\n",
       "      <th>likes</th>\n",
       "      <th>disagree</th>\n",
       "      <th>sexual_explicit</th>\n",
       "      <th>identity_annotator_count</th>\n",
       "      <th>toxicity_annotator_count</th>\n",
       "      <th>preprocessed_text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>59848</td>\n",
       "      <td>0</td>\n",
       "      <td>This is so cool. It's like, 'would you want yo...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>rejected</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>cool like would want mother read really great ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>59849</td>\n",
       "      <td>0</td>\n",
       "      <td>Thank you!! This would make my life a lot less...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>rejected</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>thank would make life lot less anxiety inducin...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>59852</td>\n",
       "      <td>0</td>\n",
       "      <td>This is such an urgent design problem; kudos t...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>rejected</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>urgent design problem kudos taking impressive</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 46 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      id  target                                       comment_text  \\\n",
       "0  59848       0  This is so cool. It's like, 'would you want yo...   \n",
       "1  59849       0  Thank you!! This would make my life a lot less...   \n",
       "2  59852       0  This is such an urgent design problem; kudos t...   \n",
       "\n",
       "   severe_toxicity  obscene  identity_attack  insult  threat  asian  atheist  \\\n",
       "0              0.0      0.0              0.0     0.0     0.0    NaN      NaN   \n",
       "1              0.0      0.0              0.0     0.0     0.0    NaN      NaN   \n",
       "2              0.0      0.0              0.0     0.0     0.0    NaN      NaN   \n",
       "\n",
       "   ...    rating  funny  wow  sad  likes  disagree  sexual_explicit  \\\n",
       "0  ...  rejected      0    0    0      0         0              0.0   \n",
       "1  ...  rejected      0    0    0      0         0              0.0   \n",
       "2  ...  rejected      0    0    0      0         0              0.0   \n",
       "\n",
       "   identity_annotator_count  toxicity_annotator_count  \\\n",
       "0                         0                         4   \n",
       "1                         0                         4   \n",
       "2                         0                         4   \n",
       "\n",
       "                                   preprocessed_text  \n",
       "0  cool like would want mother read really great ...  \n",
       "1  thank would make life lot less anxiety inducin...  \n",
       "2      urgent design problem kudos taking impressive  \n",
       "\n",
       "[3 rows x 46 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[\"preprocessed_text\"] = preprocessed_comment\n",
    "data.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1804874, 46)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "final_data = data.sample(n=500000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    459786\n",
       "1     40214\n",
       "Name: target, dtype: int64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "final_data[\"target\"].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(400000, 46)\n",
      "(100000, 46)\n"
     ]
    }
   ],
   "source": [
    "# Train test split\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "y = final_data['target'].values\n",
    "#final_data.drop(['target'], axis=1, inplace=True)      # drop project is approved columns  \n",
    "x = final_data\n",
    "\n",
    "x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.2,stratify = y)\n",
    "\n",
    "\n",
    "print(x_train.shape)\n",
    "\n",
    "print(x_test.shape)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>target</th>\n",
       "      <th>comment_text</th>\n",
       "      <th>severe_toxicity</th>\n",
       "      <th>obscene</th>\n",
       "      <th>identity_attack</th>\n",
       "      <th>insult</th>\n",
       "      <th>threat</th>\n",
       "      <th>asian</th>\n",
       "      <th>atheist</th>\n",
       "      <th>...</th>\n",
       "      <th>rating</th>\n",
       "      <th>funny</th>\n",
       "      <th>wow</th>\n",
       "      <th>sad</th>\n",
       "      <th>likes</th>\n",
       "      <th>disagree</th>\n",
       "      <th>sexual_explicit</th>\n",
       "      <th>identity_annotator_count</th>\n",
       "      <th>toxicity_annotator_count</th>\n",
       "      <th>preprocessed_text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>787703</th>\n",
       "      <td>5084985</td>\n",
       "      <td>0</td>\n",
       "      <td>Among the most recent videos posted to youtube...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>approved</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>among recent videos posted youtube group fbi e...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>701422</th>\n",
       "      <td>4980923</td>\n",
       "      <td>0</td>\n",
       "      <td>\"It was neither a rebuke nor an endorsement.\"\\...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>approved</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>neither rebuke nor endorsement roflmao link ac...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 46 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             id  target                                       comment_text  \\\n",
       "787703  5084985       0  Among the most recent videos posted to youtube...   \n",
       "701422  4980923       0  \"It was neither a rebuke nor an endorsement.\"\\...   \n",
       "\n",
       "        severe_toxicity  obscene  identity_attack  insult  threat  asian  \\\n",
       "787703              0.0      0.0              0.0     0.0     0.0    NaN   \n",
       "701422              0.0      0.0              0.0     0.0     0.0    NaN   \n",
       "\n",
       "        atheist  ...    rating  funny  wow  sad  likes  disagree  \\\n",
       "787703      NaN  ...  approved      0    1    0      0         4   \n",
       "701422      NaN  ...  approved      0    0    0      0         0   \n",
       "\n",
       "        sexual_explicit  identity_annotator_count  toxicity_annotator_count  \\\n",
       "787703              0.0                         0                         4   \n",
       "701422              0.0                         0                         4   \n",
       "\n",
       "                                        preprocessed_text  \n",
       "787703  among recent videos posted youtube group fbi e...  \n",
       "701422  neither rebuke nor endorsement roflmao link ac...  \n",
       "\n",
       "[2 rows x 46 columns]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.head(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Check performance of this feature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This function plots the confusion matrices given y_i, y_i_hat.\n",
    "def plot_confusion_matrix(test_y, predict_y):\n",
    "    C = confusion_matrix(test_y, predict_y)\n",
    "    # C = 9,9 matrix, each cell (i,j) represents number of points of class i are predicted class j\n",
    "    \n",
    "    A =(((C.T)/(C.sum(axis=1))).T)\n",
    "    #divid each element of the confusion matrix with the sum of elements in that column\n",
    "    \n",
    "    # C = [[1, 2],\n",
    "    #     [3, 4]]\n",
    "    # C.T = [[1, 3],\n",
    "    #        [2, 4]]\n",
    "    # C.sum(axis = 1)  axis=0 corresonds to columns and axis=1 corresponds to rows in two diamensional array\n",
    "    # C.sum(axix =1) = [[3, 7]]\n",
    "    # ((C.T)/(C.sum(axis=1))) = [[1/3, 3/7]\n",
    "    #                           [2/3, 4/7]]\n",
    "\n",
    "    # ((C.T)/(C.sum(axis=1))).T = [[1/3, 2/3]\n",
    "    #                           [3/7, 4/7]]\n",
    "    # sum of row elements = 1\n",
    "    \n",
    "    B =(C/C.sum(axis=0))\n",
    "    #divid each element of the confusion matrix with the sum of elements in that row\n",
    "    # C = [[1, 2],\n",
    "    #     [3, 4]]\n",
    "    # C.sum(axis = 0)  axis=0 corresonds to columns and axis=1 corresponds to rows in two diamensional array\n",
    "    # C.sum(axix =0) = [[4, 6]]\n",
    "    # (C/C.sum(axis=0)) = [[1/4, 2/6],\n",
    "    #                      [3/4, 4/6]] \n",
    "    plt.figure(figsize=(20,4))\n",
    "    \n",
    "    labels = [1,2]\n",
    "    # representing A in heatmap format\n",
    "    cmap=sns.light_palette(\"blue\")\n",
    "    plt.subplot(1, 3, 1)\n",
    "    sns.heatmap(C, annot=True, cmap=cmap, fmt=\".3f\", xticklabels=labels, yticklabels=labels)\n",
    "    plt.xlabel('Predicted Class')\n",
    "    plt.ylabel('Original Class')\n",
    "    plt.title(\"Confusion matrix\")\n",
    "    \n",
    "    plt.subplot(1, 3, 2)\n",
    "    sns.heatmap(B, annot=True, cmap=cmap, fmt=\".3f\", xticklabels=labels, yticklabels=labels)\n",
    "    plt.xlabel('Predicted Class')\n",
    "    plt.ylabel('Original Class')\n",
    "    plt.title(\"Precision matrix\")\n",
    "    \n",
    "    plt.subplot(1, 3, 3)\n",
    "    # representing B in heatmap format\n",
    "    sns.heatmap(A, annot=True, cmap=cmap, fmt=\".3f\", xticklabels=labels, yticklabels=labels)\n",
    "    plt.xlabel('Predicted Class')\n",
    "    plt.ylabel('Original Class')\n",
    "    plt.title(\"Recall matrix\")\n",
    "    \n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tfidf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of matrix after one hot encodig  (400000, 100000)\n",
      "Shape of matrix after one hot encodig  (100000, 100000)\n"
     ]
    }
   ],
   "source": [
    "# On Clean Essay\n",
    "from sklearn.preprocessing import normalize\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "\n",
    "vectorizer8 = TfidfVectorizer(min_df=10,ngram_range = (1,4),max_features = 100000)\n",
    "preprocessed_text_xtr_tfidf = vectorizer8.fit_transform(x_train['preprocessed_text'])\n",
    "preprocessed_text_xtr_tfidf = normalize(preprocessed_text_xtr_tfidf)\n",
    "print(\"Shape of matrix after one hot encodig \",preprocessed_text_xtr_tfidf.shape)\n",
    "\n",
    "preprocessed_text_xtest_tfidf = vectorizer8.transform(x_test['preprocessed_text'])\n",
    "preprocessed_text_xtest_tfidf = normalize(preprocessed_text_xtest_tfidf)\n",
    "print(\"Shape of matrix after one hot encodig \",preprocessed_text_xtest_tfidf.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Logistic Regression\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 10 folds for each of 22 candidates, totalling 220 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n",
      "[Parallel(n_jobs=8)]: Done   1 tasks      | elapsed:   15.1s\n",
      "[Parallel(n_jobs=8)]: Done   2 tasks      | elapsed:   15.3s\n",
      "[Parallel(n_jobs=8)]: Done   3 tasks      | elapsed:   15.3s\n",
      "[Parallel(n_jobs=8)]: Done   4 tasks      | elapsed:   15.4s\n",
      "[Parallel(n_jobs=8)]: Done   5 tasks      | elapsed:   15.4s\n",
      "[Parallel(n_jobs=8)]: Done   6 tasks      | elapsed:   15.5s\n",
      "[Parallel(n_jobs=8)]: Done   7 tasks      | elapsed:   15.5s\n",
      "[Parallel(n_jobs=8)]: Done   8 tasks      | elapsed:   15.5s\n",
      "[Parallel(n_jobs=8)]: Done   9 tasks      | elapsed:   21.4s\n",
      "[Parallel(n_jobs=8)]: Done  10 tasks      | elapsed:   21.5s\n",
      "[Parallel(n_jobs=8)]: Done  11 tasks      | elapsed:   21.7s\n",
      "[Parallel(n_jobs=8)]: Done  12 tasks      | elapsed:   21.7s\n",
      "[Parallel(n_jobs=8)]: Done  13 tasks      | elapsed:   21.8s\n",
      "[Parallel(n_jobs=8)]: Done  14 tasks      | elapsed:   21.9s\n",
      "[Parallel(n_jobs=8)]: Done  15 tasks      | elapsed:   23.5s\n",
      "[Parallel(n_jobs=8)]: Done  16 tasks      | elapsed:   23.6s\n",
      "[Parallel(n_jobs=8)]: Done  17 tasks      | elapsed:   27.5s\n",
      "[Parallel(n_jobs=8)]: Done  18 tasks      | elapsed:   27.6s\n",
      "[Parallel(n_jobs=8)]: Done  19 tasks      | elapsed:   28.4s\n",
      "[Parallel(n_jobs=8)]: Done  20 tasks      | elapsed:   28.6s\n",
      "[Parallel(n_jobs=8)]: Done  21 tasks      | elapsed:   31.2s\n",
      "[Parallel(n_jobs=8)]: Done  22 tasks      | elapsed:   31.7s\n",
      "[Parallel(n_jobs=8)]: Done  23 tasks      | elapsed:   33.1s\n",
      "[Parallel(n_jobs=8)]: Done  24 tasks      | elapsed:   33.3s\n",
      "[Parallel(n_jobs=8)]: Done  25 tasks      | elapsed:   36.1s\n",
      "[Parallel(n_jobs=8)]: Done  26 tasks      | elapsed:   36.3s\n",
      "[Parallel(n_jobs=8)]: Done  27 tasks      | elapsed:   37.1s\n",
      "[Parallel(n_jobs=8)]: Done  28 tasks      | elapsed:   37.2s\n",
      "[Parallel(n_jobs=8)]: Done  29 tasks      | elapsed:   38.3s\n",
      "[Parallel(n_jobs=8)]: Done  30 tasks      | elapsed:   38.3s\n",
      "[Parallel(n_jobs=8)]: Done  31 tasks      | elapsed:   38.5s\n",
      "[Parallel(n_jobs=8)]: Done  32 tasks      | elapsed:   39.0s\n",
      "[Parallel(n_jobs=8)]: Done  33 tasks      | elapsed:   40.6s\n",
      "[Parallel(n_jobs=8)]: Done  34 tasks      | elapsed:   40.8s\n",
      "[Parallel(n_jobs=8)]: Done  35 tasks      | elapsed:   41.7s\n",
      "[Parallel(n_jobs=8)]: Done  36 tasks      | elapsed:   41.9s\n",
      "[Parallel(n_jobs=8)]: Done  37 tasks      | elapsed:   43.1s\n",
      "[Parallel(n_jobs=8)]: Done  38 tasks      | elapsed:   43.2s\n",
      "[Parallel(n_jobs=8)]: Done  39 tasks      | elapsed:   43.3s\n",
      "[Parallel(n_jobs=8)]: Done  40 tasks      | elapsed:   43.8s\n",
      "[Parallel(n_jobs=8)]: Done  41 tasks      | elapsed:   47.5s\n",
      "[Parallel(n_jobs=8)]: Done  42 tasks      | elapsed:   48.0s\n",
      "[Parallel(n_jobs=8)]: Done  43 tasks      | elapsed:   49.0s\n",
      "[Parallel(n_jobs=8)]: Done  44 tasks      | elapsed:   49.2s\n",
      "[Parallel(n_jobs=8)]: Done  45 tasks      | elapsed:   50.8s\n",
      "[Parallel(n_jobs=8)]: Done  46 tasks      | elapsed:   50.9s\n",
      "[Parallel(n_jobs=8)]: Done  47 tasks      | elapsed:   51.0s\n",
      "[Parallel(n_jobs=8)]: Done  48 tasks      | elapsed:   51.1s\n",
      "[Parallel(n_jobs=8)]: Done  49 tasks      | elapsed:   53.8s\n",
      "[Parallel(n_jobs=8)]: Done  50 tasks      | elapsed:   54.0s\n",
      "[Parallel(n_jobs=8)]: Done  51 tasks      | elapsed:   54.3s\n",
      "[Parallel(n_jobs=8)]: Done  52 tasks      | elapsed:   54.6s\n",
      "[Parallel(n_jobs=8)]: Done  53 tasks      | elapsed:   55.4s\n",
      "[Parallel(n_jobs=8)]: Done  54 tasks      | elapsed:   55.6s\n",
      "[Parallel(n_jobs=8)]: Done  55 tasks      | elapsed:   55.7s\n",
      "[Parallel(n_jobs=8)]: Done  56 tasks      | elapsed:   55.9s\n",
      "[Parallel(n_jobs=8)]: Done  57 tasks      | elapsed:   58.3s\n",
      "[Parallel(n_jobs=8)]: Done  58 tasks      | elapsed:   58.8s\n",
      "[Parallel(n_jobs=8)]: Done  59 tasks      | elapsed:   59.4s\n",
      "[Parallel(n_jobs=8)]: Done  60 tasks      | elapsed:   59.4s\n",
      "[Parallel(n_jobs=8)]: Done  61 tasks      | elapsed:  1.0min\n",
      "[Parallel(n_jobs=8)]: Done  62 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=8)]: Done  63 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=8)]: Done  64 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=8)]: Done  65 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=8)]: Done  66 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=8)]: Done  67 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=8)]: Done  68 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=8)]: Done  69 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=8)]: Done  70 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=8)]: Done  71 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  72 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  73 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  74 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  75 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  76 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  77 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  78 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  79 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  80 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=8)]: Done  81 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=8)]: Done  82 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=8)]: Done  83 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=8)]: Done  84 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=8)]: Done  85 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=8)]: Done  86 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=8)]: Done  87 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  88 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  89 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  90 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  91 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  92 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  93 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  94 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  95 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  96 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=8)]: Done  97 tasks      | elapsed:  1.5min\n",
      "[Parallel(n_jobs=8)]: Done  98 tasks      | elapsed:  1.5min\n",
      "[Parallel(n_jobs=8)]: Done  99 tasks      | elapsed:  1.5min\n",
      "[Parallel(n_jobs=8)]: Done 100 tasks      | elapsed:  1.5min\n",
      "[Parallel(n_jobs=8)]: Done 101 tasks      | elapsed:  1.5min\n",
      "[Parallel(n_jobs=8)]: Done 102 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=8)]: Done 103 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=8)]: Done 104 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=8)]: Done 105 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=8)]: Done 106 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=8)]: Done 107 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=8)]: Done 108 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=8)]: Done 109 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 110 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 111 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 112 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 113 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 114 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 115 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 116 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 117 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 118 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 119 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 120 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=8)]: Done 121 tasks      | elapsed:  1.8min\n",
      "[Parallel(n_jobs=8)]: Done 122 tasks      | elapsed:  1.8min\n",
      "[Parallel(n_jobs=8)]: Done 123 tasks      | elapsed:  1.8min\n",
      "[Parallel(n_jobs=8)]: Done 124 tasks      | elapsed:  1.8min\n",
      "[Parallel(n_jobs=8)]: Done 125 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 126 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 127 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 128 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 129 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 130 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 131 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 132 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 133 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 134 tasks      | elapsed:  1.9min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=8)]: Done 135 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 136 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=8)]: Done 137 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=8)]: Done 138 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=8)]: Done 139 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=8)]: Done 140 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=8)]: Done 141 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=8)]: Done 142 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=8)]: Done 143 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=8)]: Done 144 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=8)]: Done 145 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=8)]: Done 146 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=8)]: Done 147 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=8)]: Done 148 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=8)]: Done 149 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 150 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 151 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 152 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 153 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 154 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 155 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 156 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 157 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 158 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 159 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=8)]: Done 160 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=8)]: Done 161 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=8)]: Done 162 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=8)]: Done 163 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=8)]: Done 164 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=8)]: Done 165 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=8)]: Done 166 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 167 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 168 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 169 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 170 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 171 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 172 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 173 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 174 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 175 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 176 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 177 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=8)]: Done 178 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=8)]: Done 179 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=8)]: Done 180 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=8)]: Done 181 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=8)]: Done 182 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=8)]: Done 183 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=8)]: Done 184 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 185 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 186 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 187 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 188 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 189 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 190 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 191 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 192 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 193 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=8)]: Done 194 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=8)]: Done 195 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=8)]: Done 196 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=8)]: Done 197 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=8)]: Done 198 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=8)]: Done 199 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=8)]: Done 200 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=8)]: Done 201 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=8)]: Done 202 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=8)]: Done 203 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=8)]: Done 204 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=8)]: Done 205 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=8)]: Done 220 out of 220 | elapsed:  2.9min finished\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=10, error_score='raise-deprecating',\n",
       "       estimator=SGDClassifier(alpha=0.0001, average=False, class_weight='balanced',\n",
       "       early_stopping=False, epsilon=0.1, eta0=0.0, fit_intercept=True,\n",
       "       l1_ratio=0.15, learning_rate='optimal', loss='log', max_iter=None,\n",
       "       n_iter=None, n_iter_no_change=5, n_jobs=None, penalty='l2',\n",
       "       power_t=0.5, random_state=11, shuffle=True, tol=None,\n",
       "       validation_fraction=0.1, verbose=0, warm_start=False),\n",
       "       fit_params=None, iid='warn', n_jobs=8,\n",
       "       param_grid={'alpha': [1e-10, 1e-09, 1e-08, 1e-07, 1e-06, 1e-05, 0.0001, 0.001, 0.01, 0.1, 1], 'penalty': ['l1', 'l2']},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring='roc_auc', verbose=12)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import SGDClassifier\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "parameters2={'alpha': [10**x for x in range(-10,1)] ,\n",
    "             \n",
    "             'penalty' : ['l1','l2']}\n",
    "\n",
    "clf_sgd2 = SGDClassifier(loss = 'log',random_state=11,class_weight='balanced')\n",
    "\n",
    "clf2=GridSearchCV(clf_sgd2 ,param_grid = parameters2, scoring=\"roc_auc\", cv=10, verbose=12, n_jobs=8)\n",
    "clf2.fit(preprocessed_text_xtr_tfidf,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9337614905819163\n",
      "1e-05\n",
      "l2\n"
     ]
    }
   ],
   "source": [
    "a2=clf2.best_params_['alpha']\n",
    "p2 = clf2.best_params_['penalty']\n",
    "\n",
    "print(clf2.best_score_)\n",
    "print(a2)\n",
    "print(p2)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SGDClassifier(alpha=1e-05, average=False, class_weight='balanced',\n",
       "       early_stopping=False, epsilon=0.1, eta0=0.0, fit_intercept=True,\n",
       "       l1_ratio=0.15, learning_rate='optimal', loss='log', max_iter=None,\n",
       "       n_iter=None, n_iter_no_change=5, n_jobs=None, penalty='l2',\n",
       "       power_t=0.5, random_state=11, shuffle=True, tol=None,\n",
       "       validation_fraction=0.1, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_new2 = SGDClassifier(alpha=a2,penalty = p2,loss = 'log',random_state=11,class_weight='balanced')\n",
    "model_new2.fit(preprocessed_text_xtr_tfidf,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEWCAYAAAB42tAoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd8VGXWwPHfM+mQ0JESeieFICCggKAgqKiwLooFxIrYG7u2fdV1bevay64V6wqLIiCKBUVFVJoiRZDeQg1JSG+TOe8fzyQkkIRJmcxMcr4f55PcO3funIR4z9ynnMeICEoppVR5HL4OQCmllH/TRKGUUqpCmiiUUkpVSBOFUkqpCmmiUEopVSFNFEoppSqkiUKpAGOMecQYc9gYc8DXsaj6QROF8iljzE5jTI4xJtMYc8AY87YxJvKYY04zxiw2xmQYY9KMMQuMMTHHHNPIGPOcMWa3+1xb3dstynlfY4y51Riz3hiTZYxJNMZ8aIyJ9+bPW13GmPbAXUCMiLQu4/kRxhiX+3eQ6f65ZhtjTnE/36HEc5nGGHH//EXbw2r7Z1L+TxOF8gfni0gk0Bc4Gbi36AljzKnAV8B8oC3QGVgD/GiM6eI+JhT4BogFzgYaAacBycDAct7zeeA24FagGdADmAeMrWzwxpjgyr6mGjoCySJyqIJj9rl/n1HAYOAP4AdjzEgR2S0ikUUP9/EJJfb94OX4VSASEX3ow2cPYCcwqsT2k8BnJbZ/AP5dxus+B951f38tcBCI9PA9uwOFwMAKjvkOuLbE9pXA0hLbAtwEbAF2AK8ATx1zjvnAne7v2wJzgCT38bdW8N6NgXfdx+4C/ob9UDcKyAFcQCbwdhmvHQEklrH/JWBVGfsF6ObrvwN9+PdD7yiU3zDGtAPOAba6txtg7ww+LOPw2cBZ7u9HAV+ISKaHbzUSezFdUb2IGQ8MAmKAD4CJxhgDYIxpCowGZhljHMAC7J1QtPv9bzfGjCnnvC9ik0UXYDhwBXCViHyN/f3sE/vp/8pKxPox0M8Y07ByP6JS2vSk/MM8Y0wGsAc4BDzo3t8M+ze6v4zX7AeK+h+al3NMeSp7fHkeF5EUEcnB3vkIUNTGPwH4WUT2AacALUXkYRHJF5HtwOvAJcee0BgTBEwE7hWRDBHZCTwNTK5mrPsAAzSp5nlUPaSJQvmD8SIShW026cXRBJCKbWZpU8Zr2gCH3d8nl3NMeSp7fHn2FH0jIgLMAi5177oM+K/7+45AW2PMkaIHcB/QqoxztgBCsU1ORXZh70SqIxqbyI5U8zyqHtJEofyGiHwPvA085d7OAn4GLirj8IuxHdgAXwNjKtGs8g3QzhgzoIJjsoAGJbaPG2GEvfCWNBOYYIzpiG2SmuPevwfYISJNSjyiROTcMs55GCjAJpciHYC9FcTqiT8Bv7p/p0pViiYK5W+eA84yxvR1b98DTHEPZY0yxjQ1xjwCnAr83X3Me9iL8RxjTC9jjMMY09wYc58x5riLsYhsAf4NzHQPJw01xoQbYy4xxtzjPuw34EJjTANjTDfgmhMFLiKrsR3QbwBfikjRp/cVQLox5m5jTIQxJsgYE1c0ZPWYcxRi+18edf+8HYE7gfdP/KsrzT0EONoY8yC2w/++yp5DKdBEofyMiCRhR/z8n3t7KTAGuBDbr7ALO4R2qPuCj4jkYTu0/wAWAenYi3MLYHk5b3UrdiTQy9jmmG3YT90L3M8/C+RjR1O9w9FmpBOZ6Y7lgxI/UyFwPnb47w7sXcMb2A7rstyCvaPZDix1n2uGh+8PtpkrEzsyaiUQD4wQka8qcQ6lihnbtKqUUkqVTe8olFJKVchricIYM8MYc8gYs76c540x5gV3qYW1xph+3opFKaVU1XnzjuJtbDmF8pyDnSHbHZgK/MeLsSillKoiryUKEVkCpFRwyDhsCQYRkWVAE2NMTYxtV0opVYNqs5jZsaIpMWEJSHTvO27GrDFmKvaug4YNG/bv1atXrQSoqsYlgkvA5ZLi70UEAUSKnhcMFO8TgQKXiyBjcIlQKEKhSwgypvgYAEFw/0e+00VIkKPUPo49tuj8dkfxvtLHlYjbJcdNjlCWQXAgOCh0f7WPIArdz9tjDEIwhbgwxfuKngf77x5qCnBKUPF5Sz6HOfpeRecJJx8nQaXOc/T7sraPvi9AsDvGoncqeY46L00gV/jFxWERaVmVU/gyUZgy9pX5LycirwGvAQwYMEBWrVrlzbjqpYzcAg6k5ZKe6yQ9t4D0nAKSMvJIycoHIDPPSXpOAdn5hWw/nEVUeDBZeU6y8grJc7rIcxaSV+Aiv9BV5RiK/hiDgFCHodAlhAY5aBQRQpADgowhKMgQZAwOhyHf6aKg0EXLqDCCjMEYQ5Cj6HlwuLcdxhASZL8W7TOG476PCAmiYVgwDUODjr6POfq8w4DDYd/HYSj1fEGhIAiRYfanMMZ9kTRgMO6vdptS2yWOcx9LyedEcOAkqDCfYGcWQc5sHIW5kH2YkCAHQeLEuApxSCFGCjAuJ0EFGTgKCzDixLic9qsUEpa+C2dYU4wUuvcXYsSJozCP0Iw9FIY1wbjyCUvbgSskEuMqwBTm4yjMITgvrcr/ruUrpDC0MTgciAkCE4QYBziKvjcYZx4SGomzYWsceWk4G3UA4wBjU4lxOBAMxjgQY9NSyecd7ucxDoKyDuJs0tk+Z4LcxzmO33YE2X8jZy4SHIYrNKrUsRibIo/us+9t3Ocwzhxc4U3d/9jGHRfu2Eypr8YUpcmSz1Hm8SWPM0V/MEXHIUhwxNF9gvvnchDx3gc4klOIeuaFkrP9K8WXiSIRaF9iux22Ho2qpjxnIYfS80jLKeBIdgEZuQVk5Do5nJXH1oOZZOQ5ycx1sn5fGiFBDrLynOQ5K77AN44IoVFEMA1CggkPcZCTX0iXFpE0CAsiPCSIsGAHYcFBRIQEERbiICzYQcOwYCLDgmkQGkRosIOQIPsIdtg/5oZhwQQ7jHu/ITjIvi40yIHDUdbniAAhAoX57kcB5KRCfhZk7If0feDMtd/nZx897vBmCG9ivwaHQ2EeFORCTgq4nDUbX4Pm4Ah2P+xFGZcTnEegcXtoEwvZydCiJwSHQlAYRDSF0AY2NuOA0Eho2AKCw+zP26A5BIVCUIh9OEIgJMKe3xFs36PovRxHW7yDPAw5tGZ/A3Xb3r1www0wcSJcfjnc5y6d9swLVT6lLxPFJ8DNxphZ2HIHaSJSE4Xa6oXcgkI27k9n1c5U9qflkpiazeo9RziSnU9BYfm31A1D7f+a3VpFMax7C7LyCunVOoqmDUNp2ySCRuHBRIWHEBkWTERIEE0bhtAwNDiwL9zVIWIv7vmZcGQ35KVD5iHAwJFd9iKfccB+n51iv5dCz84d3sReeINCISgYUndBqxjIOQLR/exzYVEQ0QSCI9wXXANRbewFGmMv4I4g98XZffEPibAX8qLtoJCjn4ZV3SUCb7wB06dDQQGMrfTSKuXyWqIwxszEFnlrYYxJxFYEDQEQkVeAhcC52JLS2cBV3oolkLlcwob96azec4QtBzPYlZzNzuQs9qRk4yqRD7qfFEnXlg3JzAujT7smdGnRkEYRIXRo1oDGEfbC3zwylAahvvxs4IcKnZCbBumJcOgPSNoIeRmwfw0kb7Of6E+kaSeIagshDaHjEHvxjmrlTgChUJANzbraC3qTjtCgGUS2cjdxKFUDtm2D666Db7+FM86A11+Hrl1r7PReu2qIyKUneL5o4RdVQqFLWLc3jVU7U1i+I4XVu1M5nGn7CSLDgunYvAFx0Y0Z1zeamDaN6NU6ig7NGtTfT/wArkJ7cc9JtZ/88zIh+7Bt2kndYT9VH9oAIQ3cTTthkJ0KWYdsE0tZTTsdh0LsePupP6q1bVoxDmjWxf0pv6k9X3CYflJXvrduHfzyC7z2Glx7bY3/TerHSz+QlJHHj1sP88OWw3y36RDJ7g7kjs0bMLRbC4Z1b8mgLs2IbhKBqY8XJRHIPWKbfnb9DBn7IC0RkrdCZpLd9lTzbpCbDq3joFln+2gUbZtqIppCh8H2a338PavAsn49/PorXHEFjB8P27dD8+ZeeStNFD6SkVvAt5uS+HDVHn7YYpdVaBwRwrDuLRgd25pBnZvRqlG4j6OsJXmZtnkm5wgc3gQpOyBxJaTutP0D2YePf02jaNuG36Q9dBtpL/hhjWz7fFRre7EPb2K3I5pBSD35Xaq6Lz8fHnvMPlq1gosvhvBwryUJ0ERRq/KdLj5fv595q/fyw5bDOF1Cu6YR3DCiK8O6t2BQ5+YE1dUmpMIC2+6futM2Bx3eAlsWld8HEBRmm4yadIAuI2ybftNOcFIvaD/YjsZRqr5ZvhyuuQZ+/x0mTYJnn7VJwss0UdSCfUdyePunnXy4ag+p2QW0aRzOVUM6cWavVgzs3KxuJYe8TJsI9v4KhzZC2h7Y9aPtPyip4UnQti+ENrQdwS262zb/0Aa2QzjyJN/Er5S/2rsXhg2zdxGfflqjo5pORBOFF/2+L42Xv93K1xsOUSjCyF4ncdmgDpzevWXd6HzOSYWt38D2b+HAeshKgvQyFmJr1gXa9IVOQ2wSaN0HwiJrP16lAtHmzdCjB0RHw//+ByNHQqNGtRqCJgovSEzN5oVvtvDhL4lEhgZz+eAOXD2kM+2bNTjxi/1NVjIkb4FdP9k7hKI+hLz0o8cYh+0vaNYVTp4M4Y1tE1GbvnYoqFKq8o4cgb/+1c6N+O47OP10+NOffBKKJooa5Cx08e/vtvHS4q0ATBrUkemje9K4QYiPI/OQiB1NtH+N7Uxe/zGk7S59TFhjaNQWGg+C5l2h+2joPNxOGFNK1YxPPrGzqw8cgL/8BU45btXcWqX/d9eQNXuO8H/z17M2MY1z41tz37m9adfUz+8gRCBxFWxbbPsSdi61/QtFGrWDuD/bZNC2nx1ZFBQgSU+pQHXttfDmmxAfD/Pnw4ABvo5IE0V1iQjvL9/NQ5/8TtMGIbxw6clckNDW12GVL+cIrJ9jH4krbQmKIi16wNA7Ibo/tB8EkVUqNKmUqqyiUsbG2MTQsSPcfTeE+sfoPk0U1ZBbUMhds9fw2br9jOjZkhcuPZlG4X74iTt1l71rWDUDDqy1+0IaQv8roVUstD0ZTorV5iOlfGHPHpg2DS65BCZPtt/7Gb0yVNHG/encPus3Nh3M4C9jejJteFf/Geaathe+fdTOVUhccXR/g+aQcCnEX6T9Ckr5mssFr75q7xwKC33WUe0JvVJUwcqdKUyZsYIGoUG8fdUpjOjpB2P+kzbDr+/Y4apJG+2+yFaQcJktBx1/EZzUW/sYlPIHW7bYvoglS2DUKFujqXNnX0dVLk0UlfT95iSmvruKNo3DmTX1VFo39nFpiEMb4cv7Yds3djuiKQy4GgZNg5Y9fRubUqpsGzbA2rUwYwZceaXf1xbTRFEJK3akMPXdVXRpGcm7Vw+kZVSYbwJJ3wer/wtrZ9nCeCENYNhd0PNcaOf7ERJKqTKsWQO//QZTpsC4cbaIX9Omvo7KI5ooPLQ28QjXvL2Stk0ieP+agTSPrOUk4XLBTy/AL2/Zeklgh6yOfMA2LzVqU7vxKKU8k5cHjzwCTzwBbdrYlefCwwMmSYAmCo/8vi+NK2asICo8mPevHVS7SSJ9P3z/T1sv6fBmCI2CPpfAabfYUtlKKf/188+2iN/GjbYc+DPP1EoRv5qmieIE9qflMPXdXwgLdjBz6mCim0TUzhsfWAfLX4U/PrU1lRqeBONehr6X+317plIKW8Rv+HBo3RoWLoRzzvF1RFWmiaICmXlOrnprJUey8/nf9afSsXlD779pXibMuwE2fmK3I1vDtB/17kGpQLFxI/TubYv4zZ5ti/hFRfk6qmpx+DoAfyUi3P3RWjYfzODfk/oTF93Yu29YkAtr/gcv9rdJotd5cMfvMH2TJgmlAkFqKlx9NcTEwA8/2H3jxwd8kgC9oyjXJ2v28dm6/fz17J4M7+HFUhauQvjxOVj8CIjLVmCd9LFdtU0pFRjmzoUbb4SkJLj3Xp8X8atpmijKcDgzj4c++Z2+7Ztw/eldvfMm2Smw+Uv4+WU4uA5a9IRBU6HflTpjWqlAcvXV8NZb0LcvfPYZ9Ovn64hqnF6RyvDYZxtJzS7gg+via74shwj89l/4bDo4c6BBCxj7NAy4RjuplQoUJYv4DR4M3bvD9OkQUjcrH2iiOMbSLYf5ePVebhjRld5tangVqcRfYP6NkPSHrbt03rPQZyI4tKtIqYCxaxdcfz1cdpkd8jp1qq8j8jq9QpWQW1DII59toG3jcG4b2b3mTiwCa2bBjNGQeRAueBHu2gR9L9UkoVSgcLng5ZchLg6WLoWCAl9HVGv0jqKE15ds548DGbw5ZQDhIUE1c9K8TPjvBNj9MzTtBJPn2jWklVKBY9MmW8Rv6VIYPdpWfe3UyddR1RpNFG6Jqdn8+7ttjIltxcjerWrmpKv/C4v/ARn7YdANcObfICyyZs6tlKo9mzbB77/D22/b5qZ61p+oicLtvrnrMQb+Njam+idL3QnzbrRlN1r0sDOqdbirUoFl9WpbxO+qq+CCC2wRvyZNfB2VT2gDOfDT1sMs2ZzEbSO7075ZNde5Xj8HXj3dLjN6xt/gxuWaJJQKJLm5cN99di7EQw/Zbai3SQL0jgKA577ZQsuoMKac1ql6J/run/DdY9CoHVyzSNeDUCrQ/PijLeK3aZO9k3j66YAs4lfT6n2iWLrlMCt2pPDAeTHV68D+9T2bJHqeCxe+BmGBP21fqXpl71444wxbo+nLL22ntQLqeaIQEZ77ejOtG4Vz+eAOVTuJMw8+v9uuE9GmL1z0NgT7aEEjpVTlbdhg6zNFR8OcOTZZROqgk5LqdR/FmsQ0Vu1K5frhXQgLrsLdRM4R2x/xy1u20/qqhZoklAoUKSl2GdLYWLt2NcD552uSKEO9vqOYt3ovIUGGCf3bVe0En95uZ1mf+xSccm29GzKnVMCaMwduugmSk+H++2HgQF9H5NfqbaJIzcrnfyv3cF6ftkSFV6E+y9Ln4Pe5MGgaDLyu5gNUSnnHlVfCO+/Y4n1ffGGL+akK1dtEMePHHeQ6C7lhRBWqw/7wDHzzd+h8ul2zWinl30oW8TvtNLuw0F13QXC9vQRWilf7KIwxZxtjNhljthpj7inj+Q7GmG+NMauNMWuNMed6M54iLpfwzk87Gd6jJT1aVXJ00g9P2yTRfTRMmguhtbDqnVKq6nbssCOY3n3Xbk+dCnffrUmiEryWKIwxQcDLwDlADHCpMebYac9/A2aLyMnAJcC/vRVPST9sPUx6rpMxsa0r98Jti2Hxo9AqDi75QNeNUMqfFRbCCy/YIn7Llh29q1CV5s07ioHAVhHZLiL5wCxg3DHHCFBUy7sxsM+L8RSbsXQHLaPC+NPJ0Z6/KG0vzLwMGkfDlZ9CUN2sO69UnbBxIwwbBrfdBsOH2zpNV17p66gCljcTRTSwp8R2ontfSQ8Bk4wxicBC4JayTmSMmWqMWWWMWZWUlFStoNJyCli69TAT+rfzfIKdMx8+ugoK8+DSWRDRtFoxKKW8bOtWO7v6vffsqnMdqjhPSgHeTRRljRU99t7vUuBtEWkHnAu8Z4w5LiYReU1EBojIgJYtq7d+9dcbDlLoEkb1PsnzF82/CfYsh3OehFax1Xp/pZSX/PILzJhhvz//fNs3MWmSDluvAd5MFIlA+xLb7Ti+aekaYDaAiPwMhAMtvBgTn6/fT9vG4fTr4OFdwaYvYN1sOO0WHQarlD/KyYF77oFBg+Af/zhaxK9RDa9QWY95M1GsBLobYzobY0KxndWfHHPMbmAkgDGmNzZRVK9tqQIZuQX8sOUwo2NbYzz5lFGQC5//BZp2hjP/z1thKaWqaskSSEiAf/7T9kGsXq1F/LzAa8N2RMRpjLkZ+BIIAmaIyO/GmIeBVSLyCXAX8Lox5g5ss9SVIt4bmvDJmn3kOV1c0LetZy/49R04stv2S2hpDqX8y969MHIktG8PX39tv1de4dXxnSKyENtJXXLfAyW+3wAM8WYMJc39dS89W0VxcnsP6srvWQlf3g/tB0OPs70fnFLKM+vWQXy8LeI3d64t4tdQ5zN5U70pCngwPZdfd6dydpwHzU6uQvjyXghvBBPf084wpfzB4cMweTL06XO0iN9552mSqAX1ZsbYV78fwCVwfoIHzU4r37Qr1J3/PERWYnSUUqrmicCHH8LNN0NqKjz4oO24VrWm/iSKDQfp0KwBXVue4NNHTqpdgCh6APSbUjvBKaXKN2WKnQ8xYAB8841tdlK1ql4kirScApZtT+bqIZ1P3Oz0w9N2nYlzntQmJ6V8pWQRv+HDbXPT7bdrfSYfqRd9FD9vS6agUBjZu1XFByZtghWvQ+yfoF3/2glOKVXa9u0wahS8/bbdvuYamD5dk4QP1YtEsWRLEpFhwfQ90WinL+8HDIx5rFbiUkqVUFgIzz1nm5ZWrgRHvbg8BYR6kaKXbU/mlE5NCQ2u4A9vzf9g6yI482/QqE3tBaeUsutWX301LF8OY8fCK69AuyquPKlqXJ1P2YcyctmelMWgLs3LP6ggF766H1rFw5A7ai84pZS1Ywds2wYffAALFmiS8DN1/o7ih82HARjStYISUj+/CFlJcOHrusaEUrVl5Ur47Te47jp7F7F9O0RVciExVSvq/B3Fj1sP07xhKLFtyykQlpUMP74InYZB1zNqNzil6qPsbNs5PXgwPP740SJ+miT8Vp1OFCLCj9sOM7hrcxyOcoa6fv8E5KVrB7ZSteG77+xQ16eftncSWsQvINTpdpYdh7M4mJ7H4M7Nyj7gyB5YNQP6XAxt+tRucErVN4mJcNZZ0LEjLF5sazSpgFCn7yiW70gB4LRu5fRPLHnS1nUaNr0Wo1Kqnlmzxn5t1w7mz4e1azVJBJi6nSi2J9MiMowuLcoo25FzBNZ+CLHjoWWP2g9OqbouKQkuuwz69oXvv7f7zj0XGjTwbVyq0ups05OIsHJnKqd0alp22Y71H4EzBwbdUPvBKVWXicCsWXDrrZCWBn//O5x6qq+jUtXg0R2FMSbUGNPN28HUpN0p2ew9ksNpXcuYP1FYAMtfg5a9of3A2g9Oqbps8mR7J9G1q+2sfuABCA31dVSqGk6YKIwxY4F1wCL3dl9jzFxvB1Zdq3cfAWBApzI6sjd/CYc3wdDbtfCfUjXB5TpayO+MM+CZZ+DHHyE21rdxqRrhyR3Fw8Ag4AiAiPwG+P3dxbq9aYQFO+h+UuTxT66fA6GRtvifUqp6tm61y5C+9ZbdvuYauOMOCArybVyqxniSKApE5Mgx+7y2rnVN2bg/nZ6towgOOuZHTN0Fv8+F3ufrOthKVYfTCU89ZYv4rV6tzUt1mCeJYqMx5mLAYYzpbIx5Dljm5biqxeUS1iWmER/d+Pgn184GBEbcU+txKVVnrF9vO6j/8hcYM8YW9Zs0yddRKS/xJFHcDPQHXMDHQC5wmzeDqq6tSZlk5DnLLiu+43toHQ9NO9V6XErVGbt3w65ddnTT3LnQ1oMlhlXA8mR47BgRuRu4u2iHMeZCbNLwSyvcE+2O68jOOAi7foRB03wQlVIBbvlyO3lu6lQ7H2L7dogsow9Q1Tme3FH8rYx999d0IDVpXWIazRqG0qn5MRN7Vr8H4oKT9RZZKY9lZcGdd9qmpiefhLw8u1+TRL1R7h2FMWYMcDYQbYx5psRTjbDNUH5r44F0eraKKj3RTgSW/Qc6nAatdMieUh5ZvNgW79u+HW64AZ54AsJ0EEh9U1HT0yFgPbZP4vcS+zMAv+0Jzne62Lg/nauHdi79xMHfIfsw9LjFN4EpFWgSE21HdefOtgTH6af7OiLlI+UmChFZDaw2xvxXRHJrMaZq2XIog4JCIbbtMSOefn0HMJBwqU/iUipgrF4NJ59si/gtWADDh0NEhK+jUj7kSR9FtDFmljFmrTFmc9HD65FV0aqdqQClFyoqyLVrYseMg6hWPopMKT938CBMnAj9+h0t4nf22ZoklEeJ4m3gLcAA5wCzgVlejKladhzOAqBT8xIVY3d8D3lpdt0JpVRpIvD++xATA/PmwSOPwGmn+Toq5Uc8SRQNRORLABHZJiJ/A/y2mPzmgxkktG9CUMkV7Va/B2GNoeuZvgtMKX912WW2kF/PnnYN6/vvh5AQX0el/Ign8yjyjB0+tM0YMw3YC5zk3bCqbvPBTM7o2fLojqzD8MdnMPhGCNFbaKUAW8TPGPsYPdoOfb3pJq3PpMrkyR3FHUAkcCswBLgOuNqbQVVVSlY+hzPz6N6qxPjuzV/auRNxf/ZdYEr5k82bbYXXGTPs9lVX2bUjNEmocpzwjkJElru/zQAmAxhj2nkzqKr640A6AL3blOjI/v1jaBQNbfr6KCql/ITTact/P/gghIdrJ7XyWIV3FMaYU4wx440xLdzbscaYd/HTooBFHdldWrrvKApyYccSW07cUadXfVWqYmvXwuDBcPfdcM45tojfZZf5OioVIMq9ehpjHgf+C1wOfGGMuR/4FlgD+OUi0zuSsggLdtC6UbjdsetHKMyH9oN8G5hSvpaYCHv2wIcfwpw50KaNryNSAaSipqdxQIKI5BhjmgH73NubPD25MeZs4HkgCHhDRJ4o45iLgYewa1ysEZEqf8zZdDCD7q0ij4542vgJhDSAbiOrekqlAtdPP9k7iWnTjhbxa9jwxK9T6hgVtcfkikgOgIikAH9UMkkEAS9j517EAJcaY2KOOaY7cC8wRERigdsrGX8p25Oy6FbU7CQCW762SSJU/+dQ9UhmJtx2GwwdCk8/fbSInyYJVUUV3VF0McYUlRI3QKcS24jIhSc490Bgq4hsBzDGzMLepWwoccx1wMsikuo+56FKxl8st6CQfWk5dGrh7mc/vAXSE+H06VU9pVKB56uvbBnw3bvtcNfHHtMifqraKkoUx44nfamS544G9pTYTsSuvV1SDwBjzI/Y5qmHROSLY09kjJkKTAXo0KFDmW+2JyUbEejcwv2pae3/7NcuIyoZtlIBas8eGDsWunaFJUvsHYVSNaCiooDfVPMgvMdzAAAgAElEQVTcpox9x661HQx0B0YA7YAfjDFxx67RLSKvAa8BDBgwoMz1ure7Rzx1LCrdseUru4pds85lHa5U3fHLL9C/P7RvDwsXwrBhdvirUjXEm2NGE4H2JbbbYTvEjz1mvogUiMgOYBM2cVTa5gMZAHQ/KRJyjsDB9dDnkqqcSqnAcOAAXHQRDBhwtIjfWWdpklA1zpuJYiXQ3RjT2RgTClwCfHLMMfNw141yz9XoAWyvypttOZRJdJMIGoYFw54VdjZ2+4HVCF8pPyUC77xji/gtWGD7IbSIn/IiT2o9AWCMCRORPE+PFxGnMeZm4Ets/8MMEfndGPMwsEpEPnE/N9oYswEoBP4iIsmV+xGsPw6k06t1lN3YMB/CGkGHU6tyKqX82yWXwOzZMGQIvPEG9Orl64hUHXfCRGGMGQi8CTQGOhhjEoBrReSES8WJyEJg4TH7HijxvQB3uh9VVugSdiZnM7yHuxjgjiXQ+XQIbVDxC5UKFCWL+J17ru2HuPFGrTigaoUnf2UvAOcByQAisgY/KzO+Py2HfKfLlu7IOAhpu/VuQtUdf/xhlyF98027PWUK3HyzJglVazz5S3OIyK5j9hV6I5iq2p2SDUD7pg1g22K7UxOFCnQFBbb/ISHB1maKjDzxa5TyAk/6KPa4m5/EPdv6FsCvlkLdUTw0tgFsWml3tunjw4iUqqbffrPlv3/7DSZMgBdfhNatfR2Vqqc8SRQ3YJufOgAHga/d+/zG7uRsQoMcRDeJgMObod0pEKQrdKkAduCAfcyZAxeeqAiCUt7lSaJwiohfT0hIPJJD2ybhOBwGkrfqbGwVmJYutUX8brwRzj4btm2DBjogQ/meJ30UK40xC40xU4wxUV6PqAoSU7Jp17SBnWiXsR9aVGnOnlK+kZFhO6eHDYPnnjtaxE+ThPITJ0wUItIVeAToD6wzxswzxvjVHcbeIzm0axoBB3+3O1rF+zYgpTz15ZcQFwf//ret+Prrr1rET/kdj8bXichPInIr0A9Ixy5o5BfynIUczsynbZMIOOQuTNsqpuIXKeUP9uyB886zdw5Ll9q7CR3ZpPzQCROFMSbSGHO5MWYBsAJIAvymXsD+I7kAtGkcDgfWQngTu0a2Uv5IBFassN+3bw+ffw6rV2sJDuXXPLmjWA8MBp4UkW4icpeILPdyXB5LTM0BsH0USZuhVaydvaqUv9m/H/78Zxg06GgRv1GjtIif8nuejHrqIiIur0dSRfvTbKJo2zgMDm+CmPE+jkipY4jA22/DnXdCbi7885+2TpNSAaLcRGGMeVpE7gLmGGOOWwPCgxXuasXBdNv01Co4C3JSoUUPH0ek1DEuvhg++siOanrjDeihf6MqsFR0R+FeIq7SK9vVqgPpuTRpEEJ4qns575b6P6HyA4WFtgnU4YDzz4czz4Trr9f6TCoglftXKyLuHjd6i8g3JR9A79oJ78SSMvJoGRkGB4tGPMX5NiClNm60dw9FRfyuuAJuuEGThApYnvzlXl3GvmtqOpCqOpSRR6tG4ZC00Y54imzl65BUfVVQAI88An37wqZN0LixryNSqkZU1EcxEbsqXWdjzMclnooCjpT9qtp3IC2XU7s2h0MbdcST8p3Vq+HKK20JjokT4YUX4KSTfB2VUjWioj6KFdg1KNoBL5fYnwGs9mZQnnK5hKSMPNpEBsPWDdDnYl+HpOqrgwfh8GGYNw/GjfN1NErVqHIThYjsAHZgq8X6peSsfJwuoXvQfsjP0DWyVe1asgTWrYObbrJF/LZuhYgIX0elVI0rt4/CGPO9+2uqMSalxCPVGJNSeyGW70CaHRrbNd894qlNXx9Go+qN9HRb4XX4cNvEVFTET5OEqqMq6swuWu60BdCyxKNo2+f2HrGT7aIz1kJYY51Dobxv4UKIjYVXX7UT6LSIn6oHKhoeWzQbuz0QJCKFwKnA9UDDWojthA64Z2VHZe+Gk3rr8EPlXXv22P6Hxo3hp5/g6aehoV/8r6CUV3lyZZ2HXQa1K/Audg7FB16NykMH0vMICTIEp+2EZp19HY6qi0Rg2TL7ffv28NVX9i5i0CDfxqVULfIkUbhEpAC4EHhORG4B/KI8a3JmHq0aODAZ+6FpJ1+Ho+qafftg/Hg49dSjRfzOOANCQ30bl1K1zJNE4TTGXARMBj517/OLBamTs/LpFpFlN6La+DYYVXeI2JpMMTH2DuKpp7SIn6rXPJ2ZfQa2zPh2Y0xnYKZ3w/LMwfRcekck240mHXwbjKo7JkyA666zM6zXrYO77oJgTwotK1U3nfCvX0TWG2NuBboZY3oBW0XkUe+HdmKHMvLocpImClUDShbxGz8eRo+2yUIHSCjl0Qp3w4CtwJvADGCzMcbn9+GFLuFwZh5dXLvAEQxNOvo6JBWo1q+3TUtFRfwmT9ZKr0qV4Mn/Cc8C54rIEBE5DRgLPO/dsE4sNTsfEWidvwsatIAgbRpQlZSfD3//O/TrB9u2QdOmvo5IKb/kydU1VEQ2FG2IyEZjjM+HfaTnFAAQUZgOjdv5OBoVcH75xRbxW78eLrsMnnsOWvrFPFKl/I4nieJXY8yrwHvu7cvxg6KAqdk2UUTm7IcuY30cjQo4yclw5AgsWADnnefraJTya54kimnArcBfAQMsAV70ZlCeOJyZBwjBBRkQoU0GygPffmtHMd16q+2s3rIFwsN9HZVSfq/CRGGMiQe6AnNF5MnaCckzyZn5NCILhysfGmrdf1WBtDT461/htdegVy/bUR0WpklCKQ9VVD32Pmz5jsuBRcaYsla685mUrDzaFBWxjWrt22CU/1qwwE6ce+MNmD7d9k1oET+lKqWiO4rLgT4ikmWMaQksxA6P9QspWQX0DjlkN5p39W0wyj/t2QN//rO9i5g3D045xdcRKRWQKhoemyciWQAiknSCY2vdkZx8eoQm2Y3m3XwbjPIfIrayKxwt4rdqlSYJpaqhoot/F2PMx+7HXKBrie2PK3hdMWPM2caYTcaYrcaYeyo4boIxRowxAzwNPC27gI6OwxDeBMKiPH2ZqssSE+GCC+zkuaIifiNGaBE/paqpoqanPx+z/VJlTmyMCcKutX0WkAisNMZ8UnJOhvu4KOyoquWVOX96bgFtTbLOoVDgcsHrr8Nf/gJOJzzzDAwd6uuolKozKloz+5tqnnsgti7UdgBjzCxgHLDhmOP+ATwJTK/MyVOy8uns3AYRMdUMUwW8P//Z9kGceaZNGF26+DoipeoUb/Y7RAN7Smwncsw6FsaYk4H2IvIpFTDGTDXGrDLGrEpKsv0SaTlOXEGhtpCbqn+cTnsnATZRvP46fP21JgmlvMCbiaKsK7gUP2mMA1tH6q4TnUhEXhORASIyoGXLlogI6Tm5RDlToFVcDYasAsLatXYxoddft9uTJsG11+qHBqW8xONEYYyp7ODzROx620XaAftKbEcBccB3xpidwGDgE086tDPynDQszCDEladVY+uTvDx48EHo3x927dLaTErVEk/KjA80xqwDtri3E4wxnpTwWAl0N8Z0dhcRvAT4pOhJEUkTkRYi0klEOgHLgAtEZNWJTnwkq4AWJt1uNGjuQSgq4K1caau8PvwwXHopbNwIF17o66iUqhc8uaN4ATgPSAYQkTXYFe8qJCJO4GbgS2AjMFtEfjfGPGyMuaDqIUNaTgHNixJFpJbvqBdSUyEzExYuhHffheb6AUGp2uJJUUCHiOwypdt/Cz05uYgsxM7oLrnvgXKOHeHJOQEycgtohjtRNGzh6ctUoFm82Bbxu+02W8Rv82Ytv6GUD3hyR7HHGDMQEGNMkDHmdmCzl+OqUHpuAa1Nqt3QgoB1z5EjdhnSkSPh1Vdt3wRoklDKRzxJFDcAdwIdgIPYTucbvBnUiaTnOOlkDuAKbaR3FHXN/Pm2iN+MGbbiqxbxU8rnTtj0JCKHsB3RfiM9t4AExy6kUVsdElmX7N4NF10EvXvDJ5/AAI8ruiilvOiEicIY8zol5j8UEZGpXonIA+k5BTQkD4ejoa9CUDVFBJYuhWHDoEMHO2lu8GCtz6SUH/Gk6elr4Bv340fgJCDPm0GdSFpOAU0cWZjW8b4MQ1XX7t0wdiycfvrRIn6nn65JQik/40nT0/9Kbhtj3gMWeS0iD6Rl59OcNB0aG6hcLnjlFbj7bntH8cILWsRPKT/myfDYY3UGfDodOjcnizAKdLJdoLrwQttpfdZZdnnSTp18HZFSqgKe9FGkcrSPwgGkAOWuLVErctxLoIY38WkYqhKcTnA47GPiRBg3Dq68UgcjKBUAKkwUxs6ySwD2une5ROS4ju3aFp5z0H4T1ca3gSjPrFkDV19t50ZMm2ZLcCilAkaFndnupDBXRArdD58nCYDw/GT7jfZR+LfcXPjb3+ww18REaN3a1xEpparAk1FPK4wx/bweSSWE5RXNytbqoX5rxQo4+WR49FG4/HJbxG/8eF9HpZSqgnKbnowxwe7CfkOB64wx24As7DoTIiI+SR4ChDvTIQRo0MwXIShPpKdDTg588QWMGePraJRS1VBRH8UKoB/gVx8DXS6hpTlCgSOckJAGvg5HlfTVV/D773DHHTBqFGzapOU3lKoDKkoUBkBEttVSLB4pdAnNTTp54S0I0REz/iE1Fe68E95+G2Jj4cYbbYLQJKFUnVBRomhpjLmzvCdF5BkvxHNCLhEiycEVEumLt1fH+vhjuOkmSEqCe++FBx7QBKFUHVNRoggCIil77WufKRShkclGQqN8HYravRsuuQTi4uyCQief7OuIlFJeUFGi2C8iD9daJB5yuaAR2UhE+xMfrGqeCCxZAsOH2yJ+ixfDoEEQEuLryJRSXlLR8Fi/upMo4hKhscnERDT1dSj1z65dcM45MGLE0SJ+Q4dqklCqjqsoUYystSgqweUSGpKLI1ybnmqNywUvvWQ7qpcuhRdftGXBlVL1QrlNTyKSUpuBeKrQ3ZldEKGJotaMHw8LFtj5EK++Ch19WhNSKVXLqlI91qfEVUiQESRSl0D1qoICCAqyRfwuvRQmTIDJk7WIn1L1kCclPPyLqxCA4IY6K9trfv0VBg60a0aATRRXXKFJQql6KmATBeGNfRtHXZSTY+dCDBwIBw5Aex1ZppQKwKYnxGm/hjfybRx1zbJlMGUKbN5sS4I/9RQ01ZFlSqmATBQu+zW0oW/jqGuysmy/xKJFtk6TUkq5BV6icBUlCi3hUW1ffGGL+N11F4wcCX/8AaGhvo5KKeVnAq+PQu8oqi852TYznXMOvPMO5Ofb/ZoklFJlCLhEYXAnCi0xXnki8NFHEBMDH3xgV59buVIThFKqQgHX9GREm56qbPduuOwy6NPHrh2RkODriJRSASDw7ijEhQsHBOunYI+I2MJ9YGdUf/edHeGkSUIp5aGASxQhFOAyQb4OIzDs2AGjR9uO6qIifqedBsEBdyOplPKhgEsULjE4jVYrrVBhITz/vF0nYvly+M9/tIifUqrKAu6jpQMXaaFtCPd1IP5s3Dj47DM491xbhkNnWCulqiHgEoXBRUGwjng6TskifpMn2/pMl12m9ZmUUtXm1aYnY8zZxphNxpitxph7ynj+TmPMBmPMWmPMN8aYE9avDsVJYVCEdwIOVKtWwYABtokJYOJEuPxyTRJKqRrhtURhjAkCXgbOAWKAS40xMcccthoYICJ9gI+AJ090XgEiCtNrONoAlZMDd99tlyJNStJ1IpRSXuHNO4qBwFYR2S4i+cAsYFzJA0TkWxHJdm8uA9p5cuKMhp1qMs7A9PPPdojrk0/aIn4bNsB55/k6KqVUHeTNPopoYE+J7URgUAXHXwN8XtYTxpipwFSAk9sEQ7B2ZZOTY+teff21Hf6qlFJe4s1EUVYDuZR5oDGTgAHA8LKeF5HXgNcA+rcNltDCrJqKMbAsXGiL+P3lL3DmmbBxI4ToUGGllHd5s+kpESg5LrMdsO/Yg4wxo4D7gQtEJM+TE+c3aFUjAQaMw4dh0iQYOxb++9+jRfw0SSilaoE3E8VKoLsxprMxJhS4BPik5AHGmJOBV7FJ4pCnJ3aF1JM6TyIwaxb07g2zZ8ODD8KKFVrETylVq7zW9CQiTmPMzcCXQBAwQ0R+N8Y8DKwSkU+AfwGRwIfGDuXcLSIXVHReg9SfOk+7d9ty4AkJ8OabEB/v64j8SkFBAYmJieTm5vo6FKX8Rnh4OO3atSOkBlscvDrhTkQWAguP2fdAie+rtpRaXa4cKwLffGNXmevY0dZoOuUUO5lOlZKYmEhUVBSdOnXC6JwRpRARkpOTSUxMpHPnzjV23oCr9QTU3bUotm2zI5jOOutoEb/BgzVJlCM3N5fmzZtrklDKzRhD8+bNa/wuOyAThQmpYzOzCwvhmWds09Ivv8Crr2oRPw9pklCqNG/8PxFwtZ4ATGgdSxTnnw+ff24nzP3nP9DOo3mHSilVKwIyUTiCw3wdQvXl59t1IRwOuPJKW8jvkku0PpNSyu8EaNNTgCeKFSugf3/497/t9sUX22qvmiQCSnJyMn379qVv3760bt2a6Ojo4u38orkuJ3DVVVexadOmKscQFxfH5MmTS+0bOnQov/32W/H21q1b6du3b/H2smXLGDp0KD179qRXr15MnTqVnJwcRIQbb7yRbt26kZCQUOocJX3wwQfEx8cTGxvLvffeW+q5mTNnEhMTQ2xsLFdccQUATqeToKCg4t/Nn/70p+LjTzvttOL9bdq0YcKECQC8++67xMfH06dPH4YMGcK6deuKX/PUU08RGxtLXFwcl19+OXl5dvrVpEmT6Ny5c/H5il7z9ddf07hx4+L9jz76KAAbNmwo3te3b1+ioqJ46aWXit/n2WefpWfPnsTExHDfffcBkJeXx5QpU4iPj6dv374sWbKk+PiVK1cSFxdHt27duOOOO4r3JycnM3LkSLp3786YMWNIS0urVlwATzzxBMYYjhw5Uua/UU0LyDuK4EAdHpudDf/3f/Dcc9CmDXTt6uuI6oy/L/idDftqtlhkTNtGPHh+bLnPN2/evPhi+tBDDxEZGcn06dNLHSMiiAgOR9mfyd56660qx7d27VqCg4NZvHgxOTk5REScuEl2//79TJw4kQ8//JCBAwficrn48MMPyczMZNGiRezZs4etW7eydOlSbrrpJn788cdSrz906BD33nsvv/76K82aNWPSpEl8//33DB8+nD/++IOnnnqKn376iSZNmnDo0NGpUVFRUWUmnp9++qn4+3HjxnHhhRcC0LVrV3744QeaNGnCggULmDZtGj/++CO7du3ilVdeYf369YSFhTFhwgQ+/PBDJk2aBNiL+/jx4497nzPOOIN58+aV2hcTE1Mck9PppG3btsWvXbRoEV988QVr164lLCys+Gd55ZVXCA0NZd26dRw4cIDzzjuPlStXYoxh2rRpvPXWWwwYMIAxY8awaNEizjrrLB599FHOOeccpk+fziOPPMKTTz5ZnBQqGxfAzp07+f7774mOji7337mmBeYdRWgAjnpautR2Vj/zDFx3nS3Fcc45vo5KecHWrVuJi4tj2rRp9OvXj/379zN16lQGDBhAbGwsDz/8cPGxRZ/+nU4nTZo04Z577iEhIYFTTz211IW2LDNnzuSKK67gzDPP5NNPP/UothdffJFrrrmGgQMHAuBwOJg4cSItW7Zk/vz5xXcBQ4cO5cCBAyQlJZV6/bZt2+jdu3fxaLNRo0YxZ84cAF577TVuueUWmjRpAsBJJ53k2S8MOHLkCD/88APjxtm6oUOGDCk+z+DBg0lMTCw+tqCggNzcXJxOJ9nZ2bRt29bj9ynPV199Re/evWnn7h/8z3/+w7333ktYWFipn2XDhg2MdNdWa926NQ0bNmT16tXs2bOH3NxcTjnlFIwxTJ48uTgBzJ8/nylTpgAwZcqU4xJDZeICuOOOO/jXv/5V7Z+5MgLyjsIRiKOeihYW+vZbGDHC19HUORV98veFDRs28NZbb/HKK68AtqmgWbNmOJ1OzjjjDCZMmEBMTOmq+2lpaQwfPpwnnniCO++8kxkzZnDPPcct41Js9uzZLFmyhF69evHGG29w0UUXnTCu9evXc/3115f53N69e2lfYjXEdu3asXfvXlq2bFm8r3v37qxfv57du3fTpk0b5s+fXzzKZvPmzYSEhDBkyBBcLhd///vfGT16NABZWVn079+f0NBQ7rvvPs4///xS7/3xxx8zevRoGjZseFxcb775Jue4P1R17NiR2267jfbt2xMWFsbYsWM588wzi4+95557eOCBBxg9ejSPPfYYoe4qBkuXLiUhIYHo6Gieeuqp4373s2bN4tJLLy3e3rx5M9999x133303ERERPP300/Tv35+EhATmzZvHRRddxM6dO4uTRH5+fpm/O7BNT0W/w+joaPbv3198XGXjmjNnDl26dCEuLu6435M3BeQdhSNQ+igWLLBlwAHOOMOWAtckUS907dqVU045pXh75syZ9OvXj379+rFx40Y2bNhw3GsiIiKKL4j9+/dn586d5Z7/559/pl27dkRHR3PWWWexfPny4rbvsoZHejJkUuT4mp3Hvq5Fixa8/PLLTJgwgeHDh9O5c2eCg+3nTafTyfbt2/n+++95//33ufrqq0lPTycoKIhdu3bxyy+/8N5773HzzTcf97PNnDmz1AWxyNdff817773H448/DtiL7qeffsqOHTvYt28fKSkpzJo1C4Ann3ySjRs3snLlSg4cOMBTTz0FwCmnnMLOnTtZs2YNN9xwQ3HzVpHc3Fw+++yz4v6Rop8lLS2N5cuX8/jjjzNx4kQArrvuOlq1akX//v2ZPn06p556KsHBwR797o7dX9m4MjMzefLJJ3nooYfKPK83BWSiCPL3RJGUZJchveACmDnzaBG/4IC8gVNVUPKT8ZYtW3j++edZvHgxa9eu5eyzzy5zQlRoiRpeQUFBOJ3Ocs8/c+ZM1q9fT6dOnejevTvp6enMnTsXsH0nqampxcempKTQokULAGJjY/nll1/KPGe7du3Ys+foygCJiYllNuuMGzeOFStW8NNPP9G9e3e6d+9e/Ppx48YRHBxM165d6dq1K9u2bcMYU3yebt26MWzYsFL9FYcOHWL16tXFSbLIb7/9xvXXX8/8+fNp2rQpYJtiunfvTosWLQgNDeVPf/pTcT9H27ZtMcYQFhbGlVdeyYoVKwBo3LgxkZG2msP5559PZmZmqU7gzz77jEGDBhX/jop+lj//+c8AnHrqqRQUFJCamkpISAjPP/88v/32G3Pn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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from  sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import auc\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "score_roc_train = model_new2.predict_proba(preprocessed_text_xtr_tfidf)\n",
    "fpr_train, tpr_train, threshold_train = roc_curve(y_train, score_roc_train[:,1])\n",
    "roc_auc_train = auc(fpr_train, tpr_train)\n",
    "\n",
    "score_roc_test = model_new2.predict_proba(preprocessed_text_xtest_tfidf)\n",
    "fpr_test, tpr_test, threshold_test = roc_curve(y_test, score_roc_test[:,1])\n",
    "roc_auc_test = auc(fpr_test, tpr_test)\n",
    "\n",
    "\n",
    "plt.plot(fpr_train, tpr_train, label = \"Train_AUC\"+str(auc(fpr_train, tpr_train)))\n",
    "plt.plot(fpr_test, tpr_test, label = \"Test_AUC\"+str(auc(fpr_test, tpr_test)))\n",
    "plt.legend(loc = 'lower right')\n",
    "\n",
    "plt.plot([0, 1], [0, 1],'r--')\n",
    "plt.xlim([0, 1])\n",
    "plt.ylim([0, 1])\n",
    "\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.title('ROC Curve of DT ')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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K1p2OXAHIYk0EegblSVl7im/wr5EmRX9/JrsHBYuLO0WSCZp0CDu864pK86xxX37tiXppTgh+S68sLRbIJlkyBDFCQkUJySfrick1s58PaEeQCIiIiIiIiIiWU4JIBERERERERGRLKcEkIiIiIiIiIhIllMCSEREREREREQkyykBJCIiIiIiIiKS5ZQAEhERERERERHJckoAiYiIiIiIiIhkOSWARERERERERESynBJAIiIiIiIiIiJZTgkgEREREREREZEspwSQiIiIiIiIiEiWUwJIRGQbmdl+ZvZVzGe1mV1rZreZ2cKY8lNilrnZzOaY2Uwz6xBT3jEqm2NmN8WUNzWzz81stpm9YmYVS3o/RURERESk7FMCSERkG7n7THdv6e4tgcOAX4E3otkP589z95EAZtYC6AocAHQEnjSzHDPLAZ4ATgZaAOdFdQHui9bVHFgB9Cip/RMRERERkeyhBJCIyI5xAvCdu3+fpE4XYKi7r3f3ecAcoHX0mePuc919AzAU6GJmBrQDhkfLPw+cnrY9EBERERGRrKUEkIjIjtEVeDlmupeZTTGzgWZWKyprCCyIqZMblSUqrw2sdPdNhcpFRERERESKRQkgEZEEzKynmU2K+fRMUK8i0Bl4NSp6CmgGtAQWA//Krxpncd+GchERERERkWIpX9oNEBHJVO7eH+ifQtWTgS/dfUm03JL8GWb2DPBONJkLNI5ZrhGwKPoer3wZUNPMyke9gGLri4iIiIiIpEw9gEREtt95xDz+ZWb1Y+adAXwbfR8BdDWzXcysKdAcmABMBJpHb/yqSHicbIS7O/ABcFa0/MXAW2ndExERERERyUrqASQish3MbFegPfDXmOL7zawl4XGt+fnz3H2qmQ0DpgGbgCvdPS9aTy9gFJADDHT3qdG6egNDzexOYDLwbNp3SkREREREso6FG8yZx0zjXEiwcGFpt0AySYMGccfFSVlxji3u27ctSS/FCcl34YWl3QLJJEOGKE5IoDgh+XQ9IbF25usJPQImIiIiIiIiIpLllAASEREREREREclySgCJiIiIiIiIiGQ5JYBERERERERERLKcEkAiIiIiIiIiIllOCSARERERERERkSynBJCIiIiIiIiISJZTAkhEREREREREJMuVL+0GiIiUpIMPLu0WiIhIJlOcEBGRZMpynFAPIBERERGRNDGz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CzPjxhvv5vPPP2LcuDGYlaNWrdr07n0PderssXmZGTOmcOWV53LrrQ/Ttm1HAJYsWcSDD/6Dn35ajJlx7739qVev0Rbb2rBhA/fccyOzZk2levWa9Onz8OY6xf1/IiKlr6i/z0R/85MmjaN//3+xadNGypevwOWX38Chhx4FwMyZ33LffTezfv062rRpy1VX3YKZlcbuSTHstReccAKYwZQpMGFC/Hr77gtdusDgwbBkCdSrBx06FMz/9FOYPRtq1YLOnQvKa9SAcePgiy/SuhsisoMVFSeGDRvEyJGvkpOTQ40au3HjjXdTr15DAG68sQfTpn3NQQcdxj339Nu8zBtvvMDw4c+zaNEPvPnmZ9SosVuJ7pNsmw4d4NFHIScHBgyA++7bcv5DD8Hxx4fvu+4Ku+8eYgGEup06QblyMHo0XHNNKD/nHLjllrDOd9+F3r1Lbn92VmbWEXgUyAEGuPu9heZfDlwJ5AFrgZ7uPi2adzPQI5p3tbuPKmp7SgDtAB07/pkzzriQe+4p+AuZPHk848aNYcCAt6lYsSIrVvwMwDvvvArAwIFvs2LFz/TufRlPPz2cXXetyoABb21evmfPP3PssSdtta358+cwduy7DBr0Lj//vITrr+/O4MHh9/zoo3154IFB1K27B5dffhZHH92Ovfbah379HuTss7vRrl0nHnroVkaOHE6XLuen80eyU/v3v++idetjuf32x9i4cQPr169jr72ac8kl1wLw2muDGTz4Ca67ri8AeXl59O//IEcc8cct1nPPPb258MLLOfzwY/jtt18w27rD3siRr1KtWnVefHE0Y8e+S79+D9KnzyPb9P9EREpXXl5ekX+fif7ma9Soxd13P0WdOnswb94sbryxB6+++gkAjzxyG3//e19atGjJTTddxoQJH9OmTdvS2k1JgRm0bw/DhsGaNfCXv8B338HPP29Zr0IFOPRQWLSooGzZspAMcocqVeDii2HOHFixAp5/vmD9V1wREkMiUnakEieaN/8DTz/9GpUqVeatt16iX78H6NPnEQDOPfdS1q//jbfffmWL9R544KEcddRxXHvtRSW6P7LtypWDJ54IsSI3FyZOhBEjYPr0gjrXXVfwvVcvaNUqfD/qKDjmGDj44DD9v/9B27bwzTfwwANw2GEhljz3HLRrB2PHlthu7XTMLAd4AmgP5AITzWxEfoIn8pK7Px3V7ww8BHQ0sxZAV+AAoAHwvpnt6+55ybapR8B2gEMOOYLq1WtsUfbWWy9z/vk9qVgx9LSpVas2AN9/P4dDDz1yc1nVqtWYOfPbLZbNzZ3PypU/c/DBh2+1rXHjxtCuXScqVqxI/fqNadCgCTNmTGHGjCk0aNCEBg0aU6FCRdq168S4cWNwdyZPHk/btuF2YIcOZ/C//43Z4T8DCX75ZS1TpkzklFPOAqBChYpUrVqdKlWqbq6zbt1vW9x9f+ONIRx7bAdq1qy9uWz+/Dnk5W3i8MOPAaBy5SpUqlR5q+2NGzeWDh3OAKBt2w58+eVnuHux/5+ISOlL5e8z0d988+YtNvcq3Guv5mzYsIENGzbw888/8csvaznggFaYGSeddLpiQBlQv35I2KxaBb//DjNmwD5x8vR//GPoGbRpU0HZpk0h+QNQPsFtviZNYOVKWL16x7ddRNInlTjRqtWRm88ZW7RoydKlP26ed9hhR7HrrlW2Wm/z5i226mUuma1165DcnzcPNm6EoUNDb9BEzjsPXn45fHeHSpWgYkXYZZdwM2HJEth7b5g1KyR/AN5/H848M/37spNrDcxx97nuvgEYCmzxm3T32GhdBYiiPF2Aoe6+3t3nAXOi9SWVtgSQme1vZieYWdVC5R3Ttc1Mkps7nylTJnHFFWdzzTUXMmPGFACaNdufcePGkJe3icWLFzBr1lR++mnxFsuOGfMOxx9/Stwu+suWLWH33ettnq5bdw+WLVuSsHz16hVUrVqdnJzyUXk9li1bko5dFsLjdjVr7sZ9993MZZedzgMP3MJvv/0KwIABD3POOW15//236d499LNcunQJn3zyPp07d91iPbm586latTq33tqLyy47naefvo+8vK2TueH3Xh+AnJzyVK1ajdWrVxT7/4lIadjZ40Rhqfx9Jvqbj/Xxx6PYZ58/ULFiRZYtW0LdurHrVAwoC6pWDT1/8q1ZE8pi7b47VK8Oc+duvXz9+tC9O3TrFrr25yeE8u2//5Z3iUUyleLElop7Hjdy5HDatPlTSTRNSljDhrBgQcF0bm4oi2fPPaFp04KePOPHwwcfwOLF4TNqVLjRMGdOiA9NmoRHwE4/HRo3Tv++ZDsz62lmk2I+sc9tNgRifpPkRmWF13GlmX0H3A9cXZxlC0tLAsjMrgbeAq4CvjWz2CzW3UmW2/zDeeGF/uloWonJy8tjzZrVPPnkMC6//EZuv/1a3J1TTjmTunXr8de/nsnjj9/NgQe2IicnZ4tlP/hgJO3adYq7Xi98FgeAxS03s61O+vLLJT3y8jYxa9Y0Onc+j2eeeZNKlSrz8svh//Kll/6NYcM+4sQTT+ONN14A4Ikn7uKvf71+q/8DeXmb+OabSVx+eW+efno4ixbl8p//vL7V9orz/yHZ/xORkqY4sbVU/j4T/W3nmzdvNv37P7j5EVP9zWev448PJ/DxLF4MgwbBkCHQpk04kc9Xrhw0awYzZ5ZMO0W2leLE1opzTB89+i1mzvyWc8+9NN3NklIQ79ce9xSB/9/e3UfZVZV3HP/+mABqhQRIeDFBiRgS3jQpii6CiQZUgogvhbVCayuIpkVoACUQWqUITY2witpVUWPJsoolWpQ2RWi0BtEi0MQQhQSpFNMkJDRYXiQSGxJ2/zhnkslwZ5gkM3Mnd76fte7KPfvsc84+M+eeJ/PcvfeBadPg5purHqVQxYAjj4RRo6qk0ZQp8OY3Vz1DzzsPvvEN+NGPYOXK7XuYaueUUuaWUl7f4dXxxtToA/yC32Qp5fOllMOBy4CP78i2nfXVHEAfBo4rpWxIchhwc5LDSimfo3FDgeqHA8wFWLv2xRs/kI0YcRCTJr2NJBx55GvZY489ePrpJxk2bH/OP//Ptta74IJpjBp12Nblhx/+OVu2bGHs2GO62O/BrF+/rSvn44//D8OHHwjwgvIDDjiQoUP3Y8OGX7Nly2ba2obw+OOPccABB/by2ardiBEHM2LEwRx11OsAmDz5FP7hH7b/z8dJJ53G5Zf/MeecM4OHHnqAq66qBug+/fST3HvvnbS1DWHEiIN5zWuO4hWvqNLuJ554EitW/LTh8davX8eIEQezZctmNmx4hn33HbbD14nUBIM+TnTW6HPb+fPZ1We+qv8YV1xxAbNmfZqRI1+5tX7H7v/GgN3Dhg2wzz7blvfZpyprt9deMHx49Z96qOb6ed/74Nvfrrrxt3viiWpowPDh28pf/WpYvx6efbbvz0PaRcaJTnoSJwB+8pMfc+ONX+Szn71x63QUai1r1mzfO2fUqO3ng+to2jQ4//xty+99b9UL6De/qZZvvx3e9KYq6XPrrdUL4MMfhgYDENS71gAd+1mNArr4TQLVELEv7OS2QN8NAWsrpWwAKKWsBN4CTE1yHd3csFvJiSeezNKl9wCwevUvee655xg6dD9++9uNW4cELVlyF21tbdtN3LZo0a1d9v4BOOGEKSxa9B02bdrEunWrefTRlYwb91rGjTuWRx9dybp1q3nuuU0sWvQdTjhhCkmYMOGN3HlnNQHwwoW3MHHilD4888Ft//1HcOCBB7NqVdUnf+nSuznssMNZs2bl1jo//vEiXvnKVwNw002LmD+/ek2e/A4uuugvOPHEkxk79lieeeZpnnrqCQDuu+9eXvWqF04AccIJU1i48BYA7rxzIRMmvIkkO3ydSE0w6ONEZz35fHb1md+w4dfMmjWdD33ooxx77HFb6x9wwIG87GW/w4oVyyil8N3v/hMTJ57Ur+elHbduXfWklqFDqx4748ZVXfPbbdpUTf45d271Wrt2W/Jn6NBt3wzvuy/sv//2c/04/Eu7EeNEJz2JE/mpaakAAA6USURBVL/4xQquu+4KZs/+wtY5SNV6Fi+GMWOqJ0buuWeV5Fmw4IX1jjiiiid3372tbNWqatLntrZqrrjJk7fFhREjqn+HDYOPfKR6upj61GJgTJLRSfaimtR5u99kkjEdFt8JtD/CYQEwLcneSUYDY4Aunhm6TV/1AHosyfhSyjKAOnN/GjAPOLaPjtk0V1/9UZYt+w+efvpJzjxzEmef/adMnfp7XHPNn3HOOaex5557MmvWHJLw1FP/y6WXnkuyB8OHH8Tll1+z3b5+8IPbmTNn+x4jd931fR566AE++MELGT16DG9961TOOedU2trauPDCK7YOH5ox4wouvfRDPP/8FqZO/T1Gj66ulenTZ3L11Rdzww2fZcyYIzn11DP75wczSM2Y8Qlmz76EzZuf45BDDuWyyz7Ftdd+nNWrf8kee4SDDhrJxRd/stt9tLW1cd55l/Gxj32AUuCII47mtNOq39u8eZ9j7NhjmDjxJN75zjP4q7+ayR/8wdvYd9+hfOITnwHYqetE6meDKk70RFvbkIafz5585m+55UbWrl3F1752PV/72vUAXHvtPPbb7wAuvvhK5sy5nE2bfsvxx09yPojdQCnV5JtnnFElgO6/v3oC2MSJ8Nhj1RPBujJyZNUb6Pnnq/1873uwcWO1bsiQ6o+F7363X05D2lXGiU56Eie++MVr2LjxWa68sppv8qCDDmH27C8CMGPG77Nq1SNs3PgsZ545iZkzqyfXfutbX2X+/L/jiSd+xbnnns4b3ziZmTNnN/NU9SK2bKme7LVwYZXImTcPVqyAT34SliyBf/mXqt5ZZ1UTRHd0883VsK/776/ixL/+67ZeP5/7HLyuGsjAVVf5tMi+VkrZnOQCYCHVY+DnlVKWJ7kKWFJKWQBckORk4DngSeAD9bbLk3wTWAFsBs5/sSeAAaTxfAK7JskoYHMp5bEG6yaWUu56sX20WpdNSb3jFa/YtW/9Fi7s+b3lHe8YnN8w9gfjhHrT17/e7BZoIJk50zjRCowT6k1dTZCswamUwRsn+qQHUCllTTfrXvRmLUlqbcYJSVJ3jBOS1Pv67DHwkiRJkiRJGhhMAEmSJEmSJLU4E0CSJEmSJEktzgSQJEmSJElSizMBJEmSJEmS1OJMAEmSJEl9JMkpSR5K8nCSWQ3WfzTJiiQ/S/L9JK9qRjslSa3PBJAkSZLUB5K0AZ8HpgJHAWclOapTtfuA15dSXgvcDFzTv62UJA0WJoAkSZKkvnE88HAp5ZFSyiZgPvDujhVKKXeUUp6tF+8BRvVzGyVJg4QJIEmSJGknJJmeZEmH1/ROVUYCqzssr6nLunIucHtvt1OSJIAhzW6AJEmStDsqpcwF5nZTJY02a1gxeT/wemByLzRNkqQXsAeQJO2kJPOSrE/yQIeyK5M8mmRZ/Tq1w7rL60lAH0ryjg7lDScITTI6yb1JfpHkG0n26r+zkyT1gjXAoR2WRwFrO1dKcjLw58DppZT/66e2SZIGGRNAkrTzvgKc0qD8M6WU8fXrNoB60s9pwNH1NtcnaXuRCUI/Xe9rDPAk1dAASdLuYzEwpk7o70UVBxZ0rJBkAvAlquTP+ia0UZI0SJgAkqSdVEr5IfBED6u/G5hfSvm/UsovgYepJgdtOEFokgBTqJ4IA/D3wHt69QQkSX2qlLIZuABYCDwIfLOUsjzJVUlOr6tdC7wc+Me65+iCLnYnSdIucQ4gSYPKscf2y2EuSPJHwBLgY6WUJ6km/bynQ52OE4F2niD0jcABwFP1Hw+d60uS+khvx4m6J+htncqu6PD+5N49oiSpL/XT3xN9wh5AktSFHjzdpZEvAIcD44F1wF+3765B3bIT5ZIkSZK0w+wBJEld6MHTXRpt8z/t75N8Gbi1XuxuItBG5b8ChiUZUvcCajhxqCRJkiT1hD2AJKkXJTmkw+J7gfYnhC0ApiXZO8loYAzwH3QxQWgppQB3AGfU238A+Of+OAdJkiRJrcceQJK0k5LcBLwFGJ5kDfAXwFuSjKcarrUS+GOAetLPbwIrgM3A+aWULfV+2icIbQPmlVKW14e4DJif5C+B+4Ab+unUJEmSJLUYE0CStJNKKWc1KO4ySVNKmQ3MblD+gglC6/JHqJ4SJkmSJEm7xCFgkiRJkiRJLc4EkCRJkiRJUoszASRJkiRJktTiTABJkiRJkiS1OBNAkiRJkiRJLc4EkCRJkiRJUoszASRJkiRJktTiTABJkiRJkiS1OBNAkiRJkiRJLc4EkCRJkiRJUoszASRJkiRJktTPkpyS5KEkDyeZ1WD9pCRLk2xOckandVuSLKtfC3pyvCG91XBJkiRJkiS9uCRtwOeBtwFrgMVJFpRSVnSotgo4G7ikwS42llLG78gxTQBJkiRJkiT1r+OBh0spjwAkmQ+8G9iaACqlrKzXPd8bB3QImCRJkiRJUv8aCazusLymLuuplyRZkuSeJO/pyQb2AJIkSZIkSeplSaYD0zsUzS2lzG1f3WCTsgO7f2UpZW2SVwOLktxfSvmv7jYwASRJkiRJktTL6mTP3C5WrwEO7bA8Cli7A/teW//7SJIfABOAbhNADgGTJEmSJEnqX4uBMUlGJ9kLmAb06GleSfZLsnf9fjgwkQ5zB3XFBJAkSZIkSVI/KqVsBi4AFgIPAt8spSxPclWS0wGSvCHJGuBM4EtJltebHwksSfJT4A5gTqenhzXkEDBJkiRJkqR+Vkq5DbitU9kVHd4vphoa1nm7HwPH7ujx7AEkSZIkSZLU4kwASZIkSZIktTgTQJIkSZIkSS3OBJAkSZIkSVKLMwEkSZIkSZLU4kwASZIkSZIktTgTQJIkSZIkSS3OBJAkSZIkSVKLMwEkSZIkSZLU4kwASZIkSZIktTgTQJIkSZIkSS0upZRmt0HdSDK9lDK32e1Q83ktSGrEe4PaeS1IasR7g9p5LcgeQAPf9GY3QAOG14KkRrw3qJ3XgqRGvDeondfCIGcCSJIkSZIkqcWZAJIkSZIkSWpxJoAGPsdoqp3XgqRGvDeondeCpEa8N6id18Ig5yTQkiRJkiRJLc4eQJIkSZIkSS3OBJAkSZIkSVKLMwE0QCWZl2R9kgea3RY1V5JDk9yR5MEky5Nc2Ow2SWo+44TaGSckNWKcEBgjtD3nABqgkkwCNgBfLaUc0+z2qHmSHAIcUkpZmmQf4CfAe0opK5rcNElNZJxQO+OEpEaMEwJjhLZnD6ABqpTyQ+CJZrdDzVdKWVdKWVq/fwZ4EBjZ3FZJajbjhNoZJyQ1YpwQGCO0PRNA0m4kyWHABODe5rZEkjQQGSckSV0xRsgEkLSbSPJy4FvARaWUXze7PZKkgcU4IUnqijFCYAJI2i0k2ZPqhv31Usq3m90eSdLAYpyQJHXFGKF2JoCkAS5JgBuAB0sp1zW7PZKkgcU4IUnqijFCHZkAGqCS3ATcDYxNsibJuc1uk5pmIvCHwJQky+rXqc1ulKTmMk6oA+OEpBcwTqhmjNBWPgZekiRJkiSpxdkDSJIkSZIkqcWZAJIkSZIkSWpxJoAkSZIkSZJanAkgSZIkSZKkFmcCSJIkSZIkqcWZANJ2kmypHw34QJJ/TPKyXdjXW5LcWr8/PcmsbuoOS/KRnTjGlUku6WLdH9XnsTzJivZ6Sb6S5IwdPZYkyTghSeqecUIauEwAqbONpZTxpZRjgE3An3RcmcoOXzellAWllDndVBkG7PANuytJpgIXAW8vpRwN/C7wdG/tX5IGMeOEJKk7xglpgDIBpO78CHhNksOSPJjkemApcGiStye5O8nSOrP/coAkpyT5eZJ/B97XvqMkZyf52/r9QUluSfLT+nUCMAc4vP624Nq63swki5P8LMknO+zrz5M8lOTfgLFdtP1y4JJSylqAUspvSylf7lwpyRX1MR5IMjdJ6vIZdZb/Z0nm12WT6/YtS3Jfkn128ecrSbs744RxQpK6Y5wwTmgAMQGkhpIMAaYC99dFY4GvllImAL8BPg6cXEr5XWAJ8NEkLwG+DLwLeDNwcBe7/xvgzlLK66gy6cuBWcB/1d8WzEzydmAMcDwwHjguyaQkxwHTgAlUAeENXRzjGOAnPTjVvy2lvKH+huKlwGl1+SxgQinltWz71uIS4PxSyvj6/Db2YP+S1JKME8YJSeqOccI4oYHHBJA6e2mSZVQ34VXADXX5f5dS7qnfvwk4CrirrvsB4FXAOOCXpZRflFIKcGMXx5gCfAGglLKllNKoK+Xb69d9VN8SjKO6gb8ZuKWU8mwp5dfAgl06W3hrknuT3F+36+i6/GfA15O8H9hcl90FXJdkBjCslLL5hbuTpJZnnKgYJySpMeNExTihAWdIsxugAWdjnZHequ7F+JuORcD3Silndao3Hii91I4AnyqlfKnTMS7q4TGWA8cBi7o8QPUNw/XA60spq5NcCbykXv1OYBJwOvCJJEeXUuYk+Q5wKnBPkpNLKT/fwfOSpN2dcaJinJCkxowTFeOEBhx7AGln3ANMTPIagCQvS3IE8HNgdJLD63pndbH994Hz6m3bkuwLPAN0HAO7EPhgh7HAI5McCPwQeG+Sl9ZjZt/VxTE+BVyT5OB6+73rTHtH7TfnX9XHOaOuuwdwaCnlDuBSqgnlXp7k8FLK/aWUT1N9ozGuux+SJA1ixgnjhCR1xzhhnFAT2ANIO6yU8niSs4GbkuxdF3+8lPKfSaYD30nyK+DfqcbOdnYhMDfJucAW4LxSyt1J7kryAHB7PW73SODu+huDDcD7SylLk3wDWAb8N9XEco3aeFuSg4B/S7WDAszrVOepJF+mGpe8Elhcr2oDbkwylOqbg8/Uda9O8ta6zSuA23fsJydJg4NxwjghSd0xThgn1ByphlZKkiRJkiSpVTkETJIkSZIkqcWZAJIkSZIkSWpxJoAkSZIkSZJanAkgSZIkSZKkFmcCSJIkSZIkqcWZAJIkSZIkSWpxJoAkSZIkSZJa3P8D7AgIKNbMSToAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1440x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_test_pred_tfidf = model_new2.predict(preprocessed_text_xtest_tfidf)\n",
    "\n",
    "plot_confusion_matrix(y_test, y_test_pred_tfidf)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Linear SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.36641822 0.99999996 0.99231327]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import math\n",
    "\n",
    "# custom function\n",
    "def sigmoid(x):\n",
    "    return 1 / (1 + math.exp(-x))\n",
    "\n",
    "# define vectorized sigmoid\n",
    "sigmoid_v = np.vectorize(sigmoid)\n",
    "\n",
    "# test\n",
    "scores = np.array([ -0.54761371,  17.04850603,   4.86054302])\n",
    "print (sigmoid_v(scores))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 10 folds for each of 22 candidates, totalling 220 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 12 concurrent workers.\n",
      "[Parallel(n_jobs=-1)]: Done   1 tasks      | elapsed:   13.0s\n",
      "[Parallel(n_jobs=-1)]: Done   2 tasks      | elapsed:   13.7s\n",
      "[Parallel(n_jobs=-1)]: Done   3 tasks      | elapsed:   17.1s\n",
      "[Parallel(n_jobs=-1)]: Done   4 tasks      | elapsed:   17.3s\n",
      "[Parallel(n_jobs=-1)]: Done   5 tasks      | elapsed:   17.3s\n",
      "[Parallel(n_jobs=-1)]: Done   6 tasks      | elapsed:   17.3s\n",
      "[Parallel(n_jobs=-1)]: Done   7 tasks      | elapsed:   17.9s\n",
      "[Parallel(n_jobs=-1)]: Done   8 tasks      | elapsed:   18.0s\n",
      "[Parallel(n_jobs=-1)]: Done   9 tasks      | elapsed:   18.1s\n",
      "[Parallel(n_jobs=-1)]: Done  10 tasks      | elapsed:   18.5s\n",
      "[Parallel(n_jobs=-1)]: Done  11 tasks      | elapsed:   18.5s\n",
      "[Parallel(n_jobs=-1)]: Done  12 tasks      | elapsed:   18.7s\n",
      "[Parallel(n_jobs=-1)]: Done  13 tasks      | elapsed:   21.3s\n",
      "[Parallel(n_jobs=-1)]: Done  14 tasks      | elapsed:   21.7s\n",
      "[Parallel(n_jobs=-1)]: Done  15 tasks      | elapsed:   25.9s\n",
      "[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   26.4s\n",
      "[Parallel(n_jobs=-1)]: Done  17 tasks      | elapsed:   26.5s\n",
      "[Parallel(n_jobs=-1)]: Done  18 tasks      | elapsed:   26.6s\n",
      "[Parallel(n_jobs=-1)]: Done  19 tasks      | elapsed:   26.9s\n",
      "[Parallel(n_jobs=-1)]: Done  20 tasks      | elapsed:   27.1s\n",
      "[Parallel(n_jobs=-1)]: Done  21 tasks      | elapsed:   31.3s\n",
      "[Parallel(n_jobs=-1)]: Done  22 tasks      | elapsed:   31.5s\n",
      "[Parallel(n_jobs=-1)]: Done  23 tasks      | elapsed:   32.0s\n",
      "[Parallel(n_jobs=-1)]: Done  24 tasks      | elapsed:   32.0s\n",
      "[Parallel(n_jobs=-1)]: Done  25 tasks      | elapsed:   35.1s\n",
      "[Parallel(n_jobs=-1)]: Done  26 tasks      | elapsed:   35.9s\n",
      "[Parallel(n_jobs=-1)]: Done  27 tasks      | elapsed:   36.0s\n",
      "[Parallel(n_jobs=-1)]: Done  28 tasks      | elapsed:   36.2s\n",
      "[Parallel(n_jobs=-1)]: Done  29 tasks      | elapsed:   39.8s\n",
      "[Parallel(n_jobs=-1)]: Done  30 tasks      | elapsed:   39.9s\n",
      "[Parallel(n_jobs=-1)]: Done  31 tasks      | elapsed:   40.0s\n",
      "[Parallel(n_jobs=-1)]: Done  32 tasks      | elapsed:   40.1s\n",
      "[Parallel(n_jobs=-1)]: Done  33 tasks      | elapsed:   40.3s\n",
      "[Parallel(n_jobs=-1)]: Done  34 tasks      | elapsed:   40.5s\n",
      "[Parallel(n_jobs=-1)]: Done  35 tasks      | elapsed:   41.6s\n",
      "[Parallel(n_jobs=-1)]: Done  36 tasks      | elapsed:   41.6s\n",
      "[Parallel(n_jobs=-1)]: Done  37 tasks      | elapsed:   43.4s\n",
      "[Parallel(n_jobs=-1)]: Done  38 tasks      | elapsed:   44.2s\n",
      "[Parallel(n_jobs=-1)]: Done  39 tasks      | elapsed:   44.4s\n",
      "[Parallel(n_jobs=-1)]: Done  40 tasks      | elapsed:   44.7s\n",
      "[Parallel(n_jobs=-1)]: Done  41 tasks      | elapsed:   54.3s\n",
      "[Parallel(n_jobs=-1)]: Done  42 tasks      | elapsed:   54.6s\n",
      "[Parallel(n_jobs=-1)]: Done  43 tasks      | elapsed:   54.7s\n",
      "[Parallel(n_jobs=-1)]: Done  44 tasks      | elapsed:   55.0s\n",
      "[Parallel(n_jobs=-1)]: Done  45 tasks      | elapsed:   55.0s\n",
      "[Parallel(n_jobs=-1)]: Done  46 tasks      | elapsed:   55.0s\n",
      "[Parallel(n_jobs=-1)]: Done  47 tasks      | elapsed:   55.1s\n",
      "[Parallel(n_jobs=-1)]: Done  48 tasks      | elapsed:   55.1s\n",
      "[Parallel(n_jobs=-1)]: Done  49 tasks      | elapsed:   55.8s\n",
      "[Parallel(n_jobs=-1)]: Done  50 tasks      | elapsed:   56.2s\n",
      "[Parallel(n_jobs=-1)]: Done  51 tasks      | elapsed:   57.7s\n",
      "[Parallel(n_jobs=-1)]: Done  52 tasks      | elapsed:   58.2s\n",
      "[Parallel(n_jobs=-1)]: Done  53 tasks      | elapsed:  1.0min\n",
      "[Parallel(n_jobs=-1)]: Done  54 tasks      | elapsed:  1.0min\n",
      "[Parallel(n_jobs=-1)]: Done  55 tasks      | elapsed:  1.0min\n",
      "[Parallel(n_jobs=-1)]: Done  56 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=-1)]: Done  57 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=-1)]: Done  58 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=-1)]: Done  59 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=-1)]: Done  60 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=-1)]: Done  61 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=-1)]: Done  62 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=-1)]: Done  63 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=-1)]: Done  64 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=-1)]: Done  65 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=-1)]: Done  66 tasks      | elapsed:  1.2min\n",
      "[Parallel(n_jobs=-1)]: Done  67 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  68 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  69 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  70 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  71 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  72 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  73 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  74 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  75 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  76 tasks      | elapsed:  1.3min\n",
      "[Parallel(n_jobs=-1)]: Done  77 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=-1)]: Done  78 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=-1)]: Done  79 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=-1)]: Done  80 tasks      | elapsed:  1.4min\n",
      "[Parallel(n_jobs=-1)]: Done  81 tasks      | elapsed:  1.5min\n",
      "[Parallel(n_jobs=-1)]: Done  82 tasks      | elapsed:  1.5min\n",
      "[Parallel(n_jobs=-1)]: Done  83 tasks      | elapsed:  1.5min\n",
      "[Parallel(n_jobs=-1)]: Done  84 tasks      | elapsed:  1.5min\n",
      "[Parallel(n_jobs=-1)]: Done  85 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=-1)]: Done  86 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=-1)]: Done  87 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=-1)]: Done  88 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=-1)]: Done  89 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=-1)]: Done  90 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=-1)]: Done  91 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=-1)]: Done  92 tasks      | elapsed:  1.6min\n",
      "[Parallel(n_jobs=-1)]: Done  93 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=-1)]: Done  94 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=-1)]: Done  95 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=-1)]: Done  96 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=-1)]: Done  97 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=-1)]: Done  98 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=-1)]: Done  99 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=-1)]: Done 100 tasks      | elapsed:  1.7min\n",
      "[Parallel(n_jobs=-1)]: Done 101 tasks      | elapsed:  1.8min\n",
      "[Parallel(n_jobs=-1)]: Done 102 tasks      | elapsed:  1.8min\n",
      "[Parallel(n_jobs=-1)]: Done 103 tasks      | elapsed:  1.8min\n",
      "[Parallel(n_jobs=-1)]: Done 104 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=-1)]: Done 105 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=-1)]: Done 106 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=-1)]: Done 107 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=-1)]: Done 108 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=-1)]: Done 109 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=-1)]: Done 110 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=-1)]: Done 111 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=-1)]: Done 112 tasks      | elapsed:  1.9min\n",
      "[Parallel(n_jobs=-1)]: Done 113 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=-1)]: Done 114 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=-1)]: Done 115 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=-1)]: Done 116 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=-1)]: Done 117 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=-1)]: Done 118 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=-1)]: Done 119 tasks      | elapsed:  2.0min\n",
      "[Parallel(n_jobs=-1)]: Done 120 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=-1)]: Done 121 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=-1)]: Done 122 tasks      | elapsed:  2.1min\n",
      "[Parallel(n_jobs=-1)]: Done 123 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=-1)]: Done 124 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=-1)]: Done 125 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=-1)]: Done 126 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=-1)]: Done 127 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=-1)]: Done 128 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=-1)]: Done 129 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=-1)]: Done 130 tasks      | elapsed:  2.2min\n",
      "[Parallel(n_jobs=-1)]: Done 131 tasks      | elapsed:  2.3min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Done 132 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=-1)]: Done 133 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=-1)]: Done 134 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=-1)]: Done 135 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=-1)]: Done 136 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=-1)]: Done 137 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=-1)]: Done 138 tasks      | elapsed:  2.3min\n",
      "[Parallel(n_jobs=-1)]: Done 139 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=-1)]: Done 140 tasks      | elapsed:  2.4min\n",
      "[Parallel(n_jobs=-1)]: Done 141 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 142 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 143 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 144 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 145 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 146 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 147 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 148 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 149 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 150 tasks      | elapsed:  2.5min\n",
      "[Parallel(n_jobs=-1)]: Done 151 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=-1)]: Done 152 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=-1)]: Done 153 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=-1)]: Done 154 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=-1)]: Done 155 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=-1)]: Done 156 tasks      | elapsed:  2.6min\n",
      "[Parallel(n_jobs=-1)]: Done 157 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=-1)]: Done 158 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=-1)]: Done 159 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=-1)]: Done 160 tasks      | elapsed:  2.7min\n",
      "[Parallel(n_jobs=-1)]: Done 161 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=-1)]: Done 162 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=-1)]: Done 163 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=-1)]: Done 164 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=-1)]: Done 165 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=-1)]: Done 166 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=-1)]: Done 167 tasks      | elapsed:  2.8min\n",
      "[Parallel(n_jobs=-1)]: Done 168 tasks      | elapsed:  2.9min\n",
      "[Parallel(n_jobs=-1)]: Done 169 tasks      | elapsed:  2.9min\n",
      "[Parallel(n_jobs=-1)]: Done 170 tasks      | elapsed:  2.9min\n",
      "[Parallel(n_jobs=-1)]: Done 171 tasks      | elapsed:  2.9min\n",
      "[Parallel(n_jobs=-1)]: Done 172 tasks      | elapsed:  2.9min\n",
      "[Parallel(n_jobs=-1)]: Done 173 tasks      | elapsed:  2.9min\n",
      "[Parallel(n_jobs=-1)]: Done 174 tasks      | elapsed:  2.9min\n",
      "[Parallel(n_jobs=-1)]: Done 175 tasks      | elapsed:  3.0min\n",
      "[Parallel(n_jobs=-1)]: Done 176 tasks      | elapsed:  3.0min\n",
      "[Parallel(n_jobs=-1)]: Done 177 tasks      | elapsed:  3.0min\n",
      "[Parallel(n_jobs=-1)]: Done 178 tasks      | elapsed:  3.0min\n",
      "[Parallel(n_jobs=-1)]: Done 179 tasks      | elapsed:  3.0min\n",
      "[Parallel(n_jobs=-1)]: Done 180 tasks      | elapsed:  3.0min\n",
      "[Parallel(n_jobs=-1)]: Done 181 tasks      | elapsed:  3.1min\n",
      "[Parallel(n_jobs=-1)]: Done 182 tasks      | elapsed:  3.1min\n",
      "[Parallel(n_jobs=-1)]: Done 183 tasks      | elapsed:  3.1min\n",
      "[Parallel(n_jobs=-1)]: Done 184 tasks      | elapsed:  3.1min\n",
      "[Parallel(n_jobs=-1)]: Done 185 tasks      | elapsed:  3.2min\n",
      "[Parallel(n_jobs=-1)]: Done 186 tasks      | elapsed:  3.2min\n",
      "[Parallel(n_jobs=-1)]: Done 187 tasks      | elapsed:  3.2min\n",
      "[Parallel(n_jobs=-1)]: Done 188 tasks      | elapsed:  3.2min\n",
      "[Parallel(n_jobs=-1)]: Done 189 tasks      | elapsed:  3.2min\n",
      "[Parallel(n_jobs=-1)]: Done 190 tasks      | elapsed:  3.2min\n",
      "[Parallel(n_jobs=-1)]: Done 191 tasks      | elapsed:  3.2min\n",
      "[Parallel(n_jobs=-1)]: Done 192 tasks      | elapsed:  3.2min\n",
      "[Parallel(n_jobs=-1)]: Done 193 tasks      | elapsed:  3.3min\n",
      "[Parallel(n_jobs=-1)]: Done 194 tasks      | elapsed:  3.3min\n",
      "[Parallel(n_jobs=-1)]: Done 195 tasks      | elapsed:  3.3min\n",
      "[Parallel(n_jobs=-1)]: Done 196 tasks      | elapsed:  3.3min\n",
      "[Parallel(n_jobs=-1)]: Done 197 tasks      | elapsed:  3.3min\n",
      "[Parallel(n_jobs=-1)]: Done 216 out of 220 | elapsed:  3.6min remaining:    3.9s\n",
      "[Parallel(n_jobs=-1)]: Done 220 out of 220 | elapsed:  3.6min finished\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'alpha': 0.0001, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "\n",
    "clf_param_grid = {\n",
    "    'alpha' : [10**-x for x in range(-6,5)],\n",
    "    'penalty' : ['l1','l2']\n",
    "}\n",
    "SGD_svm = SGDClassifier(class_weight='balanced',eta0 = 0.05)\n",
    "\n",
    "estimator_svm = GridSearchCV(SGD_svm, param_grid=clf_param_grid ,cv=10, verbose=12, scoring=\"roc_auc\",n_jobs=-1)\n",
    "estimator_svm.fit(preprocessed_text_xtr_tfidf,y_train)\n",
    "\n",
    "print(estimator_svm.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9253663212938843\n"
     ]
    }
   ],
   "source": [
    "b2=estimator_svm.best_params_[\"alpha\"]\n",
    "p2=estimator_svm.best_params_[\"penalty\"]\n",
    "print(estimator_svm.best_score_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_auc2= estimator_svm.cv_results_['mean_train_score'][estimator_svm.cv_results_['param_penalty']==p2]\n",
    "train_auc_std2= estimator_svm.cv_results_['std_train_score'][estimator_svm.cv_results_['param_penalty']==p2]\n",
    "cv_auc2 = estimator_svm.cv_results_['mean_test_score'][estimator_svm.cv_results_['param_penalty']==p2]\n",
    "cv_auc_std2= estimator_svm.cv_results_['std_test_score'][estimator_svm.cv_results_['param_penalty']==p2]\n",
    "\n",
    "ax=plt.subplot()\n",
    "plt.plot(clf_param_grid['alpha'], train_auc2, label='Train AUC')\n",
    "\n",
    "# this code is copied from here: https://stackoverflow.com/a/48803362/4084039\n",
    "plt.gca().fill_between(clf_param_grid['alpha'],train_auc2 - train_auc_std2,train_auc2 + train_auc_std2,alpha=0.2,color='darkblue')\n",
    "# create a shaded area between [mean - std, mean + std]\n",
    "\n",
    "plt.plot(clf_param_grid['alpha'], cv_auc2, label='CV AUC')\n",
    "# this code is copied from here: https://stackoverflow.com/a/48803362/4084039\n",
    "plt.gca().fill_between(clf_param_grid['alpha'],cv_auc2 - cv_auc_std2,cv_auc2 + cv_auc_std2,alpha=0.2,color='darkorange')\n",
    "\n",
    "plt.scatter(clf_param_grid['alpha'], train_auc2, label='Train AUC points')\n",
    "plt.scatter(clf_param_grid['alpha'], cv_auc2, label='CV AUC points')\n",
    "\n",
    "plt.xscale('log')\n",
    "plt.axis('tight')\n",
    "plt.legend()\n",
    "plt.xlabel(\"alpha: hyperparameter\")\n",
    "plt.ylabel(\"AUC\")\n",
    "plt.title(\"ERROR PLOTS\")\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SGDClassifier(alpha=0.0001, average=False, class_weight='balanced',\n",
       "       early_stopping=False, epsilon=0.1, eta0=0.0, fit_intercept=True,\n",
       "       l1_ratio=0.15, learning_rate='optimal', loss='hinge', max_iter=None,\n",
       "       n_iter=None, n_iter_no_change=5, n_jobs=None, penalty='l2',\n",
       "       power_t=0.5, random_state=None, shuffle=True, tol=None,\n",
       "       validation_fraction=0.1, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_new_svm=SGDClassifier( penalty=p2, alpha= b2,class_weight='balanced')\n",
    "model_new_svm.fit(preprocessed_text_xtr_tfidf,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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a9asku6alJSUo5JJ8c9U7OWXX+all16iqKiIJUuWlPwehpf6f1p8zqBBgygsLGTw4MHEx8dzzz33MGDAAAB27drFxx9/zFdffUWTJk145ZVX6Fiq1yA7O5tFixbx9ttvl+wTEc4991xEhNtvv52pU6cCsG3bNn766aeS38vzzz9f8j7x8fH069eP+vXr8/TTT3PmmWeW+3uuTgHXogAgLEDGKObPt2XAAUaMsKXANUnUGh07dmTQoEEl2zNnzqR///7079+fLVu2EBcXd8w5kZGRjHK3NAcMGMDu3bsrvP7y5ctp1aoVLVu25Pzzz2fFihUlfd/lTZH0ZNqkMcfW7Sx7XqNGjXjttdeYMGECw4YNo3379oSEhOByubj//vt57rnnKrz+xo0b+fvf/8509yJba9asISkpiYsvvvio47Kzs3n22Wd54oknjrnGggULGDx4MHv37mXNmjXcdtttZGdnl7yelJTE1q1bS7qdjvcz3X333ezYsYOnnnqKp59++rjnhIWFsW7dOhITE/n111/ZsmULYJ/piY6OZvXq1Vx33XXceOONR50/b948hg0bdlS304oVK/jjjz/49ttvefHFF/ntt98AcDgcZGRksGLFCv79738zceJEwCashIQE1q5dy7PPPsvEiROP+tm9JSAThfh7okhJscuQXnIJzJx5pIhfSMA14NRJKO6iANi+fTsvvfQSP/74Ixs2bOCiiy4q96GosFJ1vIKDg3E4HBVef+bMmWzatIl27drRuXNnMjMz+fLLLwE7dpKWllZy7OHDh2nUyJbo79mzJ2vWrCn3mq1atTpq7CApKYkWLVocc9y4ceNYuXIlv/32G507d6Zz586kp6cTFxfHOeecQ7t27Vi9ejWjR49m7dq1ACQkJHDZZZfx8ccflzw1vHz5clasWEG7du0YPnw4cXFxnHfeecTHx7Nr1y569+5Nu3btOHDgAKeddhopKSm8//77jB8/HhGha9eutG7dmm3btpXE9tlnnzF+/HhC3P/fmjRpwqFDh3A6nZX+TJMnT2bu3Lke/x4aNmzI0KFD+f777wFo2bIl48ePB2D8+PHHjCPMmjXrmG6n4ms2a9as5Hda/P7F1zrjjDMoKioiLS2NiIgIYmLs6p6DBw+mbdu2xMfHH/OzVLfATBT+2vVkDHz6qS3i98UX8OSTsGKFFvFTZGZmEh0d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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_roc_train = model_new_svm.decision_function(preprocessed_text_xtr_tfidf)\n",
    "fpr_train, tpr_train, threshold_train = roc_curve(y_train, sigmoid_v(score_roc_train))\n",
    "roc_auc_train = auc(fpr_train, tpr_train)\n",
    "\n",
    "score_roc_test = model_new_svm.decision_function(preprocessed_text_xtest_tfidf)\n",
    "fpr_test, tpr_test, threshold_test = roc_curve(y_test,sigmoid_v (score_roc_test))\n",
    "roc_auc_test = auc(fpr_test, tpr_test)\n",
    "\n",
    "\n",
    "plt.plot(fpr_train, tpr_train, label = \"Train_AUC\"+str(auc(fpr_train, tpr_train)))\n",
    "plt.plot(fpr_test, tpr_test, label = \"Test_AUC\"+str(auc(fpr_test, tpr_test)))\n",
    "plt.legend(loc = 'lower right')\n",
    "\n",
    "plt.plot([0, 1], [0, 1],'r--')\n",
    "plt.xlim([0, 1])\n",
    "plt.ylim([0, 1])\n",
    "\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.title('ROC Curve of SVM ')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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IuXI3bcAgwiJm4+B5919jpkNNrOTo2rHAPPN7BNgL+DOaNnVwB2EJNJ0YHBUlpS5l/qYWIUwK/35Nakaliyp6BZIJmnRIuHzrinbkWOL+65tS9JLcULynXtuRbdAMslTTylOSKA4Ifl0PSFxVfl6Qj2ARERERERERESynBJAIiIiIiIiIiJZTgkgEREREREREZEspwSQiIiIiIiIiEiWUwJIRERERERERCTLKQEkIiIiIiIiIpLllAASEREREREREclySgCJiIiIiIiIiGQ5JYBERERERERERLKcEkAiIiIiIiIiIllOCSARERERERERkSynBJCIyE4ysx+b2Qexz3ozu9LMbjOzJbHyE2LL3GhmC8xsvpn1ipX3jsoWmNkNsfI2ZjbVzD41s3+aWc3y3k8REREREan8lAASEdlJ7j7f3Q9x90OAzsC3wMvR7Afy57l7LoCZdQD6AQcCvYG/m1mOmeUADwN9gA7AWVFdgLujdbUD1gAXltf+iYiIiIhI9lACSESkbBwLfObuXySp0xcY7e4/uPvnwAKgS/RZ4O4L3X0TMBroa2YG9ABejJZ/EjglbXsgIiIiIiJZSwkgEZESmNlAM5sR+wxMUr0f8FxsepCZzTazkWbWMCprCSyO1cmLykoqbwysdfctRcpFRERERER2iBJAIiIlcPcR7n5Y7DMiUb1oXJ6TgReiomHAj4BDgGXAfflVE21mJ8pFRERERER2SPWKboCISBboA7zv7isA8n8CmNk/gFejyTygdWy5VsDS6Hui8lVAAzOrHvUCitcXERERERFJmXoAiYjsurOIPf5lZs1j804FPoq+jwH6mdluZtYGaAdMA6YD7aI3ftUkPE42xt0deAs4PVr+fOCVtO6JiIiIiIhkJfUAEhHZBWa2O9ATuDhWfI+ZHUJ4XGtR/jx3n2NmzwNzgS3AZe6+NVrPIGAckAOMdPc50bquB0ab2Z+AmcBjad8pERERERHJOhZuMGceM41zIcGSJRXdAskkLVokHBcnZTtybHHftW1JeilOSL5zz63oFkgmeeopxQkJFCckn64nJK4qX0/oETARERERERERkSynBJCIiIiIiIiISJZTAkhEREREREREJMspASQiIiIiIiIikuWUABIRERERERERyXJ6DbyIVCkHHVTRLRARkUxW1nHCzHoDQ4Ec4FF3/0uR+XsDTwIN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CSB3XwJ0NbMehLvSBrzm7m+WV+NERDJd1EvnPcLrbR8GPgPWuvuWqEoe0DL63hJYDODuW8xsHdA4Kp8SW218mcVFyrumYTd2iuKEiIgkozghIpJZkvUAAsDdxwPjy6EtIiIZxcwGAgNjRSPcfUS8TjSOwSFm1gB4GTggwaryxzmwEuaVVJ7oMd2MGzNBcUJERJJRnBARyQylJoBERLLJQQelXjdK9owotWKou9bMJgBHAA3MrHrUC6gVsDSqlge0BvLMrDpQH1gdK88XX6akchERSYMdiRMiIlL1VOY4kWwQaBERScLMmkY9fzCz2sBxwMfAW8DpUbXzgVei72OiaaL546NxhMYA/aK3hLUB2gHTgOlAu+itYjUJA0WPSf+eiYiIiIhItlEPIBGRndcceDIaB6ga8Ly7v2pmc4HRZvYnYCbwWFT/MeCpaJDn1YSEDu4+x8yeJwzuvAW4LHq0DDMbBIwDcoCR7j6n/HZPRERERESyhRJAIiI7yd1nA50SlC+k4C1e8fLvgTNKWNedwJ0JynOB3F1urIiIiIiIVGl6BExEREREREREJMspASQiIiIiIiIikuWUABIRERERERERyXJKAImIiIiIiIiIZDklgEREREREREREspwSQCIiIiIiIiIiWU4JIBERERERERGRLKcEkIiIiIiIiIhIllMCSERERERERESknJlZbzObb2YLzOyGBPMvMbMPzewDM3vHzDrE5t0YLTffzHqlsr3qZdn4quqrr5Zx113XsXr1KsyqcdJJZ3L66efzyCN38+67b1GjRg1atNib66+/izp16jFjxiRGjLiPLVs2U716DS655FoOPfRIvv/+O2677XcsXfol1arl0K3bzxk48JqE23zmmeHk5r5ITk41Bg26mS5dfgrAtGkTeeihO9m6dRsnnngGZ589EIBlyxYzePDVbNiwjnbtOnDTTfdQo0bNcvsdVSX9+vVg9933oFq1auTk5DB8+EssWPAx999/K5s2/UBOTg5XXnkbBxxwEG+8MYbRo/8BQO3ae3DllbfRtu3+ANx9941MmTKBBg0a8/jjrybclrvzt7/dydSpb1OrVi2uv/4vtG9/IACvv/4yTz89DIBzz72U3r1PBWD+/I+4++4b+eGH7+natTuXX/4HzCzdvxYRSUFJx/B8mzZt4q67ruOTT+ZQr14Dbr31AZo1a1Vi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\n",
      "text/plain": [
       "<Figure size 1440x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_test_pred_svm = model_new_svm.predict(preprocessed_text_xtest_tfidf)\n",
    "\n",
    "plot_confusion_matrix(y_test, y_test_pred_svm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Naive Base\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 10 folds for each of 11 candidates, totalling 110 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 12 concurrent workers.\n",
      "[Parallel(n_jobs=-1)]: Done   1 tasks      | elapsed:    7.2s\n",
      "[Parallel(n_jobs=-1)]: Done   2 tasks      | elapsed:    7.3s\n",
      "[Parallel(n_jobs=-1)]: Done   3 tasks      | elapsed:    7.4s\n",
      "[Parallel(n_jobs=-1)]: Done   4 tasks      | elapsed:    7.4s\n",
      "[Parallel(n_jobs=-1)]: Done   5 tasks      | elapsed:    7.4s\n",
      "[Parallel(n_jobs=-1)]: Done   6 tasks      | elapsed:    7.5s\n",
      "[Parallel(n_jobs=-1)]: Done   7 tasks      | elapsed:    7.7s\n",
      "[Parallel(n_jobs=-1)]: Done   8 tasks      | elapsed:    7.8s\n",
      "[Parallel(n_jobs=-1)]: Done   9 tasks      | elapsed:    7.9s\n",
      "[Parallel(n_jobs=-1)]: Done  10 tasks      | elapsed:    8.0s\n",
      "[Parallel(n_jobs=-1)]: Done  11 tasks      | elapsed:    8.0s\n",
      "[Parallel(n_jobs=-1)]: Done  12 tasks      | elapsed:    8.1s\n",
      "[Parallel(n_jobs=-1)]: Done  13 tasks      | elapsed:   12.6s\n",
      "[Parallel(n_jobs=-1)]: Done  14 tasks      | elapsed:   12.7s\n",
      "[Parallel(n_jobs=-1)]: Done  15 tasks      | elapsed:   12.8s\n",
      "[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   13.0s\n",
      "[Parallel(n_jobs=-1)]: Done  17 tasks      | elapsed:   13.4s\n",
      "[Parallel(n_jobs=-1)]: Done  18 tasks      | elapsed:   13.6s\n",
      "[Parallel(n_jobs=-1)]: Done  19 tasks      | elapsed:   13.8s\n",
      "[Parallel(n_jobs=-1)]: Done  20 tasks      | elapsed:   13.8s\n",
      "[Parallel(n_jobs=-1)]: Done  21 tasks      | elapsed:   13.9s\n",
      "[Parallel(n_jobs=-1)]: Done  22 tasks      | elapsed:   14.2s\n",
      "[Parallel(n_jobs=-1)]: Done  23 tasks      | elapsed:   14.5s\n",
      "[Parallel(n_jobs=-1)]: Done  24 tasks      | elapsed:   14.6s\n",
      "[Parallel(n_jobs=-1)]: Done  25 tasks      | elapsed:   18.4s\n",
      "[Parallel(n_jobs=-1)]: Done  26 tasks      | elapsed:   18.5s\n",
      "[Parallel(n_jobs=-1)]: Done  27 tasks      | elapsed:   18.5s\n",
      "[Parallel(n_jobs=-1)]: Done  28 tasks      | elapsed:   18.9s\n",
      "[Parallel(n_jobs=-1)]: Done  29 tasks      | elapsed:   19.4s\n",
      "[Parallel(n_jobs=-1)]: Done  30 tasks      | elapsed:   19.4s\n",
      "[Parallel(n_jobs=-1)]: Done  31 tasks      | elapsed:   19.4s\n",
      "[Parallel(n_jobs=-1)]: Done  32 tasks      | elapsed:   19.5s\n",
      "[Parallel(n_jobs=-1)]: Done  33 tasks      | elapsed:   19.9s\n",
      "[Parallel(n_jobs=-1)]: Done  34 tasks      | elapsed:   20.2s\n",
      "[Parallel(n_jobs=-1)]: Done  35 tasks      | elapsed:   20.3s\n",
      "[Parallel(n_jobs=-1)]: Done  36 tasks      | elapsed:   20.7s\n",
      "[Parallel(n_jobs=-1)]: Done  37 tasks      | elapsed:   23.7s\n",
      "[Parallel(n_jobs=-1)]: Done  38 tasks      | elapsed:   23.9s\n",
      "[Parallel(n_jobs=-1)]: Done  39 tasks      | elapsed:   24.0s\n",
      "[Parallel(n_jobs=-1)]: Done  40 tasks      | elapsed:   24.2s\n",
      "[Parallel(n_jobs=-1)]: Done  41 tasks      | elapsed:   24.4s\n",
      "[Parallel(n_jobs=-1)]: Done  42 tasks      | elapsed:   24.4s\n",
      "[Parallel(n_jobs=-1)]: Done  43 tasks      | elapsed:   24.5s\n",
      "[Parallel(n_jobs=-1)]: Done  44 tasks      | elapsed:   24.7s\n",
      "[Parallel(n_jobs=-1)]: Done  45 tasks      | elapsed:   25.0s\n",
      "[Parallel(n_jobs=-1)]: Done  46 tasks      | elapsed:   25.7s\n",
      "[Parallel(n_jobs=-1)]: Done  47 tasks      | elapsed:   25.8s\n",
      "[Parallel(n_jobs=-1)]: Done  48 tasks      | elapsed:   25.8s\n",
      "[Parallel(n_jobs=-1)]: Done  49 tasks      | elapsed:   29.4s\n",
      "[Parallel(n_jobs=-1)]: Done  50 tasks      | elapsed:   29.5s\n",
      "[Parallel(n_jobs=-1)]: Done  51 tasks      | elapsed:   29.6s\n",
      "[Parallel(n_jobs=-1)]: Done  52 tasks      | elapsed:   29.7s\n",
      "[Parallel(n_jobs=-1)]: Done  53 tasks      | elapsed:   29.7s\n",
      "[Parallel(n_jobs=-1)]: Done  54 tasks      | elapsed:   29.8s\n",
      "[Parallel(n_jobs=-1)]: Done  55 tasks      | elapsed:   29.8s\n",
      "[Parallel(n_jobs=-1)]: Done  56 tasks      | elapsed:   30.0s\n",
      "[Parallel(n_jobs=-1)]: Done  57 tasks      | elapsed:   30.3s\n",
      "[Parallel(n_jobs=-1)]: Done  58 tasks      | elapsed:   30.8s\n",
      "[Parallel(n_jobs=-1)]: Done  59 tasks      | elapsed:   30.8s\n",
      "[Parallel(n_jobs=-1)]: Done  60 tasks      | elapsed:   31.5s\n",
      "[Parallel(n_jobs=-1)]: Done  61 tasks      | elapsed:   34.9s\n",
      "[Parallel(n_jobs=-1)]: Done  62 tasks      | elapsed:   35.0s\n",
      "[Parallel(n_jobs=-1)]: Done  63 tasks      | elapsed:   35.0s\n",
      "[Parallel(n_jobs=-1)]: Done  64 tasks      | elapsed:   35.0s\n",
      "[Parallel(n_jobs=-1)]: Done  65 tasks      | elapsed:   35.1s\n",
      "[Parallel(n_jobs=-1)]: Done  66 tasks      | elapsed:   35.2s\n",
      "[Parallel(n_jobs=-1)]: Done  67 tasks      | elapsed:   35.2s\n",
      "[Parallel(n_jobs=-1)]: Done  68 tasks      | elapsed:   35.4s\n",
      "[Parallel(n_jobs=-1)]: Done  69 tasks      | elapsed:   35.6s\n",
      "[Parallel(n_jobs=-1)]: Done  70 tasks      | elapsed:   36.0s\n",
      "[Parallel(n_jobs=-1)]: Done  71 tasks      | elapsed:   36.1s\n",
      "[Parallel(n_jobs=-1)]: Done  72 tasks      | elapsed:   36.5s\n",
      "[Parallel(n_jobs=-1)]: Done  73 tasks      | elapsed:   40.1s\n",
      "[Parallel(n_jobs=-1)]: Done  74 tasks      | elapsed:   40.2s\n",
      "[Parallel(n_jobs=-1)]: Done  75 tasks      | elapsed:   40.4s\n",
      "[Parallel(n_jobs=-1)]: Done  76 tasks      | elapsed:   40.5s\n",
      "[Parallel(n_jobs=-1)]: Done  77 tasks      | elapsed:   40.5s\n",
      "[Parallel(n_jobs=-1)]: Done  78 tasks      | elapsed:   40.6s\n",
      "[Parallel(n_jobs=-1)]: Done  79 tasks      | elapsed:   40.6s\n",
      "[Parallel(n_jobs=-1)]: Done  80 tasks      | elapsed:   40.8s\n",
      "[Parallel(n_jobs=-1)]: Done  81 tasks      | elapsed:   41.1s\n",
      "[Parallel(n_jobs=-1)]: Done  82 tasks      | elapsed:   41.3s\n",
      "[Parallel(n_jobs=-1)]: Done  83 tasks      | elapsed:   41.3s\n",
      "[Parallel(n_jobs=-1)]: Done  84 tasks      | elapsed:   41.6s\n",
      "[Parallel(n_jobs=-1)]: Done  85 tasks      | elapsed:   45.7s\n",
      "[Parallel(n_jobs=-1)]: Done  86 tasks      | elapsed:   45.7s\n",
      "[Parallel(n_jobs=-1)]: Done  87 tasks      | elapsed:   46.0s\n",
      "[Parallel(n_jobs=-1)]: Done  97 out of 110 | elapsed:   50.7s remaining:    6.7s\n",
      "[Parallel(n_jobs=-1)]: Done 107 out of 110 | elapsed:   52.1s remaining:    1.4s\n",
      "[Parallel(n_jobs=-1)]: Done 110 out of 110 | elapsed:   52.6s finished\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "({'alpha': 0.1},\n",
       " MultinomialNB(alpha=0.1, class_prior=None, fit_prior=True),\n",
       " 0.848894691597666)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.naive_bayes import MultinomialNB\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "params={'alpha' : [10**i for i in range(-6,5)]}\n",
    "\n",
    "clf_tfidf_NB = MultinomialNB(alpha = 'alpha')\n",
    "\n",
    "clf_NB=GridSearchCV(clf_tfidf_NB ,param_grid = params, scoring=\"roc_auc\", cv=10, verbose=12, n_jobs=-1)\n",
    "clf_NB.fit(preprocessed_text_xtr_tfidf,y_train)\n",
    "clf_NB.best_params_,clf_NB.best_estimator_,clf_NB.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.1\n"
     ]
    }
   ],
   "source": [
    "a2 = clf_NB.best_params_[\"alpha\"]\n",
    "\n",
    "print(a2)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MultinomialNB(alpha=0.1, class_prior=None, fit_prior=True)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_new_NB = MultinomialNB(alpha = a2 )\n",
    "model_new_NB.fit(preprocessed_text_xtr_tfidf,y_train)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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du1abrjhhjqfy8rKolutHRFTU1PJysqiffv2NY/17duXtWvXsnPnTjp37sycOXN+NdPm6aef5qmnnsLpdLJgwQIAJk+ezNy5c+ncuTOlpaU8/fTTtGnThsGDB/PAAw+Ql5dHVFQUn376KaNHj6651owZM/jXv/5FcnJyzbVqe/XVVxlfxweuWbNm1dxcATZt2sS3337LXXfdRUxMDI899hjHHnssWVlZnFLr/2P1n/e4445DRDjttNMQEW6++WauvfZaAD744AN69+7NoEGD6v0d146rrt/pqlWrAHjqqae48MIL6dixY53X2bZtG1lZWYwdW2cZvGYTki0KT3RSaPTnz5tny4ADnHqqLQWuSaLVSEtL47jjjqs5njlzJsOHD2f48OFs2LCB9evXH/SamJiYmhvMsccey44dO+q9/o8//khqaipdu3blzDPPZMmSJRQWFgJ1T+heyL8AABpASURBVJH0ZdqkMQfX7Tzwde3ateO5557joosuYuzYsfTq1Yvw8P2fOW+77Ta2bt3KQw89VNN19OOPPxIdHU1WVhbbtm3j//7v/0hPT2fQoEFMnz6dM844g/Hjx3PMMcf86loPP/wwmZmZXHzxxfyzekzP66uvvuLtt9/m73//+68er6io4JNPPuGiiy6qeczlclFYWMiSJUv4+9//zqRJkw75512yZAk///wzn3zyCU8++SQ//PADJSUlPPLII9x///31/g4PjKu+98jMzOSjjz7i5ptvrvdaM2fO5JJLLqm327K5hFyicIgHT3SQdztlZ9ttSM8/H2bO3F/ELzzkGnCqEeLi4mp+3rx5M0899RTffPMNq1evZty4cXUuioqsVcfL4XDgcrnqvf7MmTNZu3YtPXv2pG/fvhQVFdV026SkpJCfn19zbl5eXs2A6MCBA+vtXklNTSUjY//uAJmZmXTpcvDe9BMnTmTp0qX88MMP9O3bl759/7+9cw+vorz2/2cRbgIGgVaQRAgSLtm5bcItIHhCgQPyk4CCggUPlELwggWO0FPlJ7W2aotaIRWPF1SiQopYMGBLURTDxYRLAiIEkSAhgtwEFJBbsrPOHzOZ7JDbJuYK7+d59sOemXdm1iyyZ8273ne+q0ORNr/85S9ZtmwZAIsWLWLIkCHUq1ePli1bEh0d7dgQFxdHeno669ato2nTpiUeKz+9BbB9+3YmT55M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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from  sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import auc\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "score_roc_train = model_new_NB.predict_proba(preprocessed_text_xtr_tfidf)\n",
    "fpr_train, tpr_train, threshold_train = roc_curve(y_train, score_roc_train[:,1])\n",
    "roc_auc_train = auc(fpr_train, tpr_train)\n",
    "\n",
    "score_roc_test = model_new_NB.predict_proba(preprocessed_text_xtest_tfidf)\n",
    "fpr_test, tpr_test, threshold_test = roc_curve(y_test, score_roc_test[:,1])\n",
    "roc_auc_test = auc(fpr_test, tpr_test)\n",
    "\n",
    "\n",
    "plt.plot(fpr_train, tpr_train, label = \"Train_AUC\"+str(auc(fpr_train, tpr_train)))\n",
    "plt.plot(fpr_test, tpr_test, label = \"Test_AUC\"+str(auc(fpr_test, tpr_test)))\n",
    "plt.legend(loc = 'lower right')\n",
    "\n",
    "plt.plot([0, 1], [0, 1],'r--')\n",
    "plt.xlim([0, 1])\n",
    "plt.ylim([0, 1])\n",
    "\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.title('ROC Curve of KNN ')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Random Forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(bootstrap=True, class_weight='balanced_subsample',\n",
       "            criterion='gini', max_depth=10, max_features='auto',\n",
       "            max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
       "            min_impurity_split=None, min_samples_leaf=1,\n",
       "            min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "            n_estimators=2000, n_jobs=None, oob_score=False,\n",
       "            random_state=None, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "\n",
    "\n",
    "clf_tfidf_RF = RandomForestClassifier(n_estimators= 2000,max_depth = 10,class_weight = \"balanced_subsample\")\n",
    "\n",
    "clf_tfidf_RF.fit(preprocessed_text_xtr_tfidf,y_train)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from  sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import auc\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "score_roc_train = clf_tfidf_RF.predict_proba(preprocessed_text_xtr_tfidf)\n",
    "fpr_train, tpr_train, threshold_train = roc_curve(y_train, score_roc_train[:,1])\n",
    "roc_auc_train = auc(fpr_train, tpr_train)\n",
    "\n",
    "score_roc_test = clf_tfidf_RF.predict_proba(preprocessed_text_xtest_tfidf)\n",
    "fpr_test, tpr_test, threshold_test = roc_curve(y_test, score_roc_test[:,1])\n",
    "roc_auc_test = auc(fpr_test, tpr_test)\n",
    "\n",
    "\n",
    "plt.plot(fpr_train, tpr_train, label = \"Train_AUC\"+str(auc(fpr_train, tpr_train)))\n",
    "plt.plot(fpr_test, tpr_test, label = \"Test_AUC\"+str(auc(fpr_test, tpr_test)))\n",
    "plt.legend(loc = 'lower right')\n",
    "\n",
    "plt.plot([0, 1], [0, 1],'r--')\n",
    "plt.xlim([0, 1])\n",
    "plt.ylim([0, 1])\n",
    "\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.title('ROC Curve of KNN ')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Predict final submissions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>comment_text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7000000</td>\n",
       "      <td>Jeff Sessions is another one of Trump's Orwell...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7000001</td>\n",
       "      <td>I actually inspected the infrastructure on Gra...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7000002</td>\n",
       "      <td>No it won't . That's just wishful thinking on ...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        id                                       comment_text\n",
       "0  7000000  Jeff Sessions is another one of Trump's Orwell...\n",
       "1  7000001  I actually inspected the infrastructure on Gra...\n",
       "2  7000002  No it won't . That's just wishful thinking on ..."
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data = pd.read_csv(\"test.csv\")\n",
    "test_data.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 10%|█         | 10091/97320 [00:02<00:21, 4034.81it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b\"I think I'm cooler than the blonde ones. Not that I don't love them, you know, family/..\"\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 14%|█▍        | 13592/97320 [00:03<00:24, 3373.91it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 20%|█▉        | 19109/97320 [00:04<00:19, 3941.68it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Who really cares? ..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 30%|███       | 29439/97320 [00:07<00:16, 4019.35it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'...'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 32%|███▏      | 31467/97320 [00:08<00:16, 4014.79it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 35%|███▌      | 34344/97320 [00:09<00:15, 4085.95it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said, Doc.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 40%|████      | 39310/97320 [00:10<00:14, 4124.87it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Your logic makes perfect sense... Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 47%|████▋     | 45411/97320 [00:11<00:12, 4046.48it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Dude, you need to educate yourself to World Politics and respect the opinion of other posters irrespective if you agree or not.... \\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 49%|████▉     | 47856/97320 [00:12<00:12, 4052.13it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Exactly... Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 55%|█████▍    | 53268/97320 [00:13<00:10, 4095.56it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'\"He said five wives - probably some at the same time.\"\\n~ \\nOh come on... how would you know, Canadian?..\\n\\nThe comment was well stated & interesting.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 61%|██████    | 59484/97320 [00:15<00:09, 4116.68it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said.\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 62%|██████▏   | 59896/97320 [00:15<00:09, 4084.33it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'Well Said..\\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 66%|██████▌   | 64059/97320 [00:16<00:08, 4147.46it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'. . . You are absolutely right. \\n\\n/..'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      " 87%|████████▋ | 85019/97320 [00:22<00:03, 4043.71it/s]C:\\Users\\MERCER\\Anaconda3\\lib\\site-packages\\bs4\\__init__.py:272: UserWarning: \"b'.'\" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.\n",
      "  ' Beautiful Soup.' % markup)\n",
      "100%|██████████| 97320/97320 [00:25<00:00, 3798.52it/s]\n"
     ]
    }
   ],
   "source": [
    "from tqdm import tqdm\n",
    "from bs4 import BeautifulSoup\n",
    "\n",
    "preprocessed_comment_test = []\n",
    "# tqdm is for printing the status bar\n",
    "for sentance in tqdm(test_data['comment_text'].values):\n",
    "    sentance = re.sub(r\"http\\S+\", \"\", sentance)\n",
    "    sentance = BeautifulSoup(sentance, 'lxml').get_text()\n",
    "    sentance = decontracted(sentance)\n",
    "    sentance = re.sub(\"\\S*\\d\\S*\", \"\", sentance).strip()\n",
    "    sentance = re.sub('[^A-Za-z]+', ' ', sentance)\n",
    "    # https://gist.github.com/sebleier/554280\n",
    "    sentance = ' '.join(e.lower() for e in sentance.split() if e.lower() not in stopwords)\n",
    "    preprocessed_comment_test.append(sentance.strip())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>comment_text</th>\n",
       "      <th>preprocessed_text_test_pred</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7000000</td>\n",
       "      <td>Jeff Sessions is another one of Trump's Orwell...</td>\n",
       "      <td>jeff sessions another one trump orwellian choi...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7000001</td>\n",
       "      <td>I actually inspected the infrastructure on Gra...</td>\n",
       "      <td>actually inspected infrastructure grand chief ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7000002</td>\n",
       "      <td>No it won't . That's just wishful thinking on ...</td>\n",
       "      <td>no not wishful thinking democrats fault th tim...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        id                                       comment_text  \\\n",
       "0  7000000  Jeff Sessions is another one of Trump's Orwell...   \n",
       "1  7000001  I actually inspected the infrastructure on Gra...   \n",
       "2  7000002  No it won't . That's just wishful thinking on ...   \n",
       "\n",
       "                         preprocessed_text_test_pred  \n",
       "0  jeff sessions another one trump orwellian choi...  \n",
       "1  actually inspected infrastructure grand chief ...  \n",
       "2  no not wishful thinking democrats fault th tim...  "
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data[\"preprocessed_text_test_pred\"] = preprocessed_comment_test\n",
    "test_data.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(97320, 3)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of matrix after one hot encodig  (97320, 100000)\n"
     ]
    }
   ],
   "source": [
    "# On Clean Essay\n",
    "from sklearn.preprocessing import normalize\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "\n",
    "\n",
    "preprocessed_text_xtest_pred = vectorizer8.transform(test_data['preprocessed_text_test_pred'])\n",
    "preprocessed_text_xtest_pred = normalize(preprocessed_text_xtest_pred)\n",
    "print(\"Shape of matrix after one hot encodig \",preprocessed_text_xtest_pred.shape)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "my_preds = model_new2.predict_proba(preprocessed_text_xtest_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(97320, 2)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[0.70656124, 0.29343876],\n",
       "       [0.87401351, 0.12598649],\n",
       "       [0.81944327, 0.18055673],\n",
       "       ...,\n",
       "       [0.90309973, 0.09690027],\n",
       "       [0.19976408, 0.80023592],\n",
       "       [0.7070679 , 0.2929321 ]])"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(my_preds.shape)\n",
    "my_preds\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.70656124, 0.87401351, 0.81944327, ..., 0.90309973, 0.19976408,\n",
       "       0.7070679 ])"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_preds[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7000000</td>\n",
       "      <td>0.706561</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7000001</td>\n",
       "      <td>0.874014</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7000002</td>\n",
       "      <td>0.819443</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        id    target\n",
       "0  7000000  0.706561\n",
       "1  7000001  0.874014\n",
       "2  7000002  0.819443"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predids=test_data['id']\n",
    "y_id=predids.values.tolist()\n",
    "\n",
    "preddf=pd.DataFrame({'id':y_id,\n",
    "                     'target':my_preds[:,0]})\n",
    "\n",
    "#look at predictions\n",
    "preddf.head(3)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "# SAVE DF\n",
    "preddf.to_csv('final_submission_LR_eshan1.csv',index=False)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(97320, 2)"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "preddf.shape"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
